HTML
<li>::before<a href="#county" class="eods-error">::before"County is required."::after</a></li>
基于上面的html,我写了以下内容:
Cssselector :#eods-error > div > div.eods-error-box > ul > li:nth-child(1)
xpath ://*[@id="eods-error"]/div/div[1]/ul/li[1]/a/text()
我使用selenium webdriver和java进行自动化。要根据上面给出的 HTML 找到一个元素,我在上面使用了diff。 2个定位器。但是,如果在html中添加了新的元素/ div,那么这些可能会产生问题。
有没有其他方法可以使用更详细的xpath找到上面的元素,所以即使其他 DIV 出现在html中,xpath也不会失败。
html部分的屏幕截图:
答案 0 :(得分:1)
您可以在下面使用
的XPath
//a[@href="#county"]
CSS选择器
a[href="#county"]
匹配所需的锚
如果您希望当前选择器匹配它,尽管存在/不存在临时div
,那么您可以使用以下语法
的XPath。变化
//*[@id="eods-error"]/div/div[1]/ul/li[1]/a/text()
到
//*[@id="eods-error"]//div[1]/ul/li[1]/a/text()
CSS选择器。改变
#eods-error > div > div.eods-error-box > ul > li:nth-child(1)
到
#eods-error div.eods-error-box > ul > li:nth-child(1)
请注意,XPath中的/
和CSS选择器中的>
表示直接子节点的路径,而XPath中的//
和CSS选择器中的空间 - 表示后代节点的路径
另请注意,XPath语法.../text()
在Selenium中不起作用:您应该找到父WebElement,然后调用getText()
方法