我正在使用自动化测试工具。为了找到元素xpath,我编写了几乎对所有元素都适用的代码。但是相同的代码不适用于少数元素,并且发现元素的父节点为null。我已经使用了chrome的xpath助手,并发现了span元素的xpath如下。
/ html [@ class ='ng-scope'] / body / div [@ id ='ui-datepicker-div'] / div [@ class ='ui-datepicker-header ui-widget-header ui- helper-clearfix ui-corner-all'] / a [@ class ='ui-datepicker-prev ui-corner-all ui-state-hover ui-datepicker-prev-hover'] / span [@ class ='ui-图标ui-icon-circle-triangle-w']
点击相同的元素后,返回不完整的xpath,如下所示
/ div [@ class ='ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all'] / a [@ class ='ui-datepicker-prev ui-corner-all ui状态悬浮ui-datepicker-prev-hover'] / span [@ class ='ui-icon ui-icon-circle-triangle-w xh-highlight']
即使从chrome的xpath帮助程序也不会返回完整路径。如何解决此问题,或者我缺少什么?
我使用过的xpath帮助器仅用于显示单击元素后路径的变化。实际上,我正在使用Internet上的以下代码来单击元素后获取xpath。
function(element) {
var ix = 0;
var siblings = element.parentNode.childNodes; // getting error parent node is null
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++;
}
}
当我遇到错误时,该函数未返回完整的xpath。上面的代码是
答案 0 :(得分:0)
如果您查看提供的XPATH详细信息
点击前
/html[@class='ng-scope']
/body
/div[@id='ui-datepicker-div']
/div[@class='ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all']
/a[@class='ui-datepicker-prev ui-corner-all ui-state-hover ui-datepicker-prev-hover']
/span[@class='ui-icon ui-icon-circle-triangle-w']
点击后
/div[@class='ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all']
/a[@class='ui-datepicker-prev ui-corner-all ui-state-hover ui-datepicker-prev-hover']
/span[@class='ui-icon ui-icon-circle-triangle-w xh-highlight']
点击该元素后,只会在跨度中添加“ xh-highlight”,即该元素会突出显示。
在这里,您可以自定义此XPATH,例如,它应该可以完美运行。
/div[@class='ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all']
/a[@class='ui-datepicker-prev ui-corner-all ui-state-hover ui-datepicker-prev-hover']
/span[contains(@class,'ui-icon ui-icon-circle-triangle-w')]
即在Span中使用“ contains()”方法代替“ =”。
但是我建议不要使用XPath帮助程序来创建自己的XPath定位器