【问题标题】:xpath link two attributesxpath 链接两个属性
【发布时间】:2019-04-15 09:08:45
【问题描述】:

所以我正在尝试使用 selenium 进行自动化测试,并且需要查看是否为特定用户选中了复选框。页面如下所示。

第一个用户的复选框没有被选中,第二个被选中。因此,当检查时,存在一个复选框=“已选中”属性,当未选中时不存在。我不确定我将如何格式化它,以便我能够专门查看我正在寻找的那个盒子。我试过(//input[contains(@name='user_5166855' and @checked='checked')]),但它似乎没有用。

【问题讨论】:

标签: xml selenium xpath


【解决方案1】:

尝试在XPath下面选择

  • 检查一个

    //input[@name="user_5166855" and @checked]
    
  • 未选中

    //input[@name="user_5166855" and not(@checked)]
    

注意checked是布尔属性,所以不需要验证属性的值——验证存在就足够了

【讨论】:

  • 您确实应该使用.Selected.isSelected() 等,而不是尝试使用定位器执行此操作。查看我链接的副本。
【解决方案2】:

因此,您已经为第二个用户创建了 Xpath,您需要做的就是:

    public boolean IsCheckBoxChecked()
{
    try
    {
    driver.findElement(By.name("//input[contains(@name='user_5166855' and @checked='checked')]")).getAttribute("checked")
    }
    catch
    {
    false
    }
}

所以你在这里做什么你找到你的元素,在 try 块中然后你的测试将通过,如果元素没有这样的属性(复选框未选中),那么它将返回 false 并且断言失败。

【讨论】:

  • 您正在尝试将 XPath(使用无效语法)传递给 By.name 方法。那肯定行不通。另外你怎么知道 OP 使用 Java?
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多