如何在Selenium WebDriver(Java)中单击引用另一个Web元素的元素?

时间:2017-06-26 12:28:50

标签: selenium

如下图所示,有许多span标签,每个标签都有自己的a-tag,其唯一ID为“chooseitem”。我需要在span标签中使用名称选择特定的标签。

Need to click the a-tag button using the text Mayo Chicken

需要使用图片中上述HTML代码段中的文字Mayo Chicken点击a-tag按钮。

我尝试过以下Selenium脚本

WebElement select = driver.findElement(By.xpath("//*[contains(text(),'Mayo Chicken (Single)')]"));
WebElement add = select.findElement(By.id("chooseitem"));

它对我不起作用。

driver.findElement(By.id("chooseitem"));

上面的代码默认选择页面中的第一项,因为它的id也是'chooseitem',但是需要定义要选择的内容。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

我们需要获得小鸡的共同父(祖先)元素和可点击的'a'标签,然后我们可以导航到标签'a'。理想情况下,xpath下面应该可以工作。

 "//span[contains(text(),'Mayo chicken')]/ancestor::div[4]//a"

注意:这里我使用了div [4],因为第四个父母是'Mayo chicken'的共同祖先,标记'a'。

有关不同xpath轴的更多详细信息,请参阅此 - > https://www.w3schools.com/xml/xpath_axes.asp

希望这会对你有所帮助。感谢。

答案 1 :(得分:0)

您可以使用xpath位置,按F12键显示开发者工具点击"选择元素按钮",点击页面上您感兴趣的元素,如图所示,您将看到一个或突出显示更多行,右键单击该行 - >复制 - >复制xpath。您将拥有如下所示的内容:

//*[@id="comment-76500216"]/td[2]/div/span[1]

xpath位置为:

//td[2]/div/span[1]

当您有多个共享名称或ID等的元素时,可以使用它。

你将拥有:

WebElement select = driver.findElement(By.xpath("//td[2]/div/span[1]"));

PS:我使用谷歌浏览器