在Selenium中找到具有相同签名的元素的最佳方法?

时间:2016-04-12 07:53:44

标签: java selenium

我在接受采访时被问过这个问题。从两个相同的按钮找到页面上特定按钮的最佳方法是什么?

页面上有两个这样的按钮,我需要找到第二个按钮。

button class =“button-signin”name =“btnlogin_login”value =“Login”type =“submit”>登录/按钮>

我已经回答说我找到了两个并从列表中选择了我需要的东西 - 他们说这不好,因为页面可以更改。你能建议我这样做的好方法吗?

2 个答案:

答案 0 :(得分:0)

基本上,按钮必须是某些HTML元素的子元素。 案例1:家长不同,您可以通过指定不同的父级来引用每个按钮,例如cssSelector("#component1 > button")cssSelector("#component2 > button")案例2:他们有相同的父或路径是相同的,有几个选项。

  1. 使用索引,例如XPath //button[2]或CssSelector button:nth-child(2)
  2. 更改应用程序,添加一些区分按钮
  3. 对于案例2,我认为没有必要让2个按钮在应用程序中具有完全相同的属性。就个人而言,我更喜欢选项#2

答案 1 :(得分:0)

如果他们说要找到第二个元素,我会选择这样的解决方案:

List<WebElement> buttons = driver.findElements(By.class("button-signin"));
if(buttons.size() > 1){
    buttons.get(1);
}

但对我来说没有意义的是他们告诉你的,而不是页面可以改变...技术上如果页面改变你应该修改你的测试以使它们更容易找到元素节省时间并使它们更具可读性,你因为页面不是永远不能永远地进行测试。