我已经玩了一段时间编写XPath,但我无法提出我想要的内容。
我正在尝试根据已知文本(下面的代码片段中的myidentity)为链接编写XPath(在下面的代码片段中单击1并单击2)。有人可以查看并建议可能的解决方案吗?
HTML code snippet:
<div class="abc">
<a onclick="mycontroller.goto('xx','yy'); return false;" href="#">
<img src="images/controls/inheritance.gif"/>
</a>
myidentity
<span>
<a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click1</a>
<a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click2</a>
</span>
</div>
答案 0 :(得分:2)
很难说没有看到HTML的其余内容,但以下内容应该有效:
//div[text()[contains(., "myidentity")]]/span/a
答案 1 :(得分:2)
您不需要在这里使用XPath,您可以使用CSS定位器。这些通常在不同的浏览器中更快,更兼容。
css=div:contains(myidentity) > span a:nth-child(1) //click1
css=div:contains(myidentity) > span a:nth-child(2) //click2
请注意,>
只需要解决Selenium使用的CSS定位器库中的错误。
答案 2 :(得分:0)
请参阅Macro的答案 - 应使用此表单。
//div[text()[contains(., "myidentity")]]/span/a[2]
以下内容仅适用于包含div中的一段文字。
您需要根据包含身份文字的文字进行选择。
click1的Xpath
//div[contains(text(),"myidentity")]/span/a[1]
click2的Xpath
//div[contains(text(),"myidentity")]/span/a[2]