如何使用Selenium实现对象'Spy'以获取鼠标下的信息?



我需要创建一个对象间谍,即获取鼠标下方的元素定位器,而鼠标由用户控制。我在Selenium API看到很多methots,但找不到合适的。我知道已经有很多工具可以做到这一点,但无论如何都需要实现我自己的工具。 任何想法如何使用硒实现这一点?谢谢。

您可以使用以下 javascript 在鼠标下获取元素 xpath。只需将以下代码粘贴到浏览器控制台中即可。然后右键单击任何元素,它将在鼠标单击下为该元素提供 xpath。

document.onclick= function(event) {
if (event===undefined) event= window.event;                     // IE hack
var target= 'target' in event? event.target : event.srcElement; // another IE hack
var root= document.compatMode==='CSS1Compat'? document.documentElement : document.body;
var mxy= [event.clientX+root.scrollLeft, event.clientY+root.scrollTop];
var path= getPathTo(target);
var txy= getPageXY(target);
alert('Clicked element '+path+' offset '+(mxy[0]-txy[0])+', '+(mxy[1]-txy[1]));
}
function getPathTo(element) {
if (element.id!=='')
return 'id("'+element.id+'")';
if (element===document.body)
return element.tagName;
var ix= 0;
var siblings= element.parentNode.childNodes;
for (var i= 0; i<siblings.length; i++) {
var sibling= siblings[i];
if (sibling===element)
return getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
if (sibling.nodeType===1 && sibling.tagName===element.tagName)
ix++;
}
}
function getPageXY(element) {
var x= 0, y= 0;
while (element) {
x+= element.offsetLeft;
y+= element.offsetTop;
element= element.offsetParent;
}
return [x, y];
}

参考:我将点击坐标存储在我的数据库中,然后稍后重新加载它们并在发生点击的网站上显示它们,如何确保它加载在同一位置?

最新更新