如何使用java访问selenium中具有相同类名的第二个元素

时间:2014-05-23 12:11:05

标签: java selenium selenium-webdriver

尝试自动化我们的应用程序时,有两个同名的按钮。

我无法找到识别这些的方法。请告诉我在java中的selenium webdriver中识别这些元素的其他方法

3 个答案:

答案 0 :(得分:16)

您可以使用xpath索引选项。

By.xpath("(//input[@name='Button'])[2]")

答案 1 :(得分:2)

如果属性没有唯一性,则可以始终使用xpath。对于例如如果你想找到一个包含文字foo和名称button的元素,那么如果名称在那里不唯一,我会更喜欢xpath:

//*[@name='button' and text()='foo'] 

或者对于不同的班级,但同名的

//button[@name='button' and @class='xyz']

或用于不同的文字但名称相同

//input[@name='button' and contains(text(),'Click Here')]

或不同的标签,但名称相同

//button[@name='button']
//input[@name='button']

只需使用任何独特的属性并制作自定义的xpath。

我希望你也可以使用java脚本,例如。

WebElement butttonToClick = driver.findElement(By.name("button"));
((JavascriptExecutor)driver).executeScript("arguments[1].click();",butttonToClick );

其中arguments[1]表示具有相同名称的第二个元素。

答案 2 :(得分:0)

您可以使用xpath方法,例如follow-sibling / previous siblings。

例如,如果Button位于任何唯一的webelement,请尝试首先识别webelement,并使用不同的xpath方法,如follow-siblings,content,previous siblings,您可以访问web元素。