XPath用于href元素

20
我需要点击下面的 href 元素,它与其他相似的 href 元素在一起。
<a id="oldcontent" href="listDetails.do?camp=1865"><u>Re-Call</u></a>

有人可以提供给我点击上述 href 链接的 XPath 吗?


selenium.click("xpath=//a[@href="listDetails.do?camp=1865"]"); 不起作用。 - cxyz
selenium.click("xpath=//a[@href='listDetails.do?camp=1865']"); 不起作用。 - cxyz
8个回答

29

尝试使用以下定位器。

selenium.click("css=a[href*='listDetails.do'][id='oldcontent']");
或。
selenium.click("xpath=//a[contains(@href,'listDetails.do') and @id='oldcontent']");

7
这个可以正常工作,请尝试这段代码-
selenium.click("xpath=//a[contains(@href,'listDetails.do') and @id='oldcontent']");

3
这将获取通用链接:
selenium.FindElement(By.XPath("xpath=//a[contains(@href,'listDetails.do')")).Click();

如果您想指定参数,则需要测试每个参数:
...
int i = 1;

selenium.FindElement(By.XPath("xpath=//a[contains(@href,'listDetails.do?camp=" + i.ToString() + "')")).Click();
...

上述可利用for循环遍历每个营地编号页面,从而验证静态营地列表。

如果代码不完美,请原谅,我自己还没有测试。


1

我的做法:

//a[contains(@href,'logout')]

1

你尝试过了吗:

//a[@id='oldcontent']/u[text()='Re-Call']

1
对我来说有效的代码是 //a[text()='Re-Call']。

0

以下代码运行正常。

//a[@id='oldcontent']

如果您尝试过某些方法但并未奏效,请告诉我们;否则,像这样简单的方法应该可以解决问题。

有多个具有相同ID的标签,因此我不使用它。我想要使用href值本身来获取它。 - cxyz
2
好的,那么//a[@href='listDetails.do?camp=1865']呢?请注意,它看起来像是一个唯一的ID,所以你需要考虑这个。如果你进行全局包含搜索,你能得到返回的元素吗?//a[contains(@href, 'listDetails.do')] - Arran
是的,我需要根据列表listDetails.do?camp=1865末尾的唯一ID进行选择,因为所有href都有相同的字符串listDetails.do?camp... 只有整数不同。 - cxyz
selenium.click("xpath=//a[@href='listDetails.do?camp=1865']"); 不起作用... 有人可以提供解决方案吗? - cxyz
1
你用什么浏览器?在Chrome v22上运行良好。它是否能找到元素,还是只是无法点击它? - Arran
显示剩余4条评论

0

定位锚点元素的最佳方法是使用link=Re-Call

selenium.click("link=Re-Call");

它会工作的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接