尝试自动化我们的应用程序时,有两个同名的按钮。
我无法找到识别这些的方法。请告诉我在java中的selenium webdriver中识别这些元素的其他方法
答案 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元素。