Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xpath链接两个属性_Xml_Selenium_Xpath - Fatal编程技术网

Xml xpath链接两个属性

Xml xpath链接两个属性,xml,selenium,xpath,Xml,Selenium,Xpath,因此,我正在尝试使用selenium自动化测试,并且需要查看是否选中了特定用户的复选框。页面看起来像这样 第一个用户的复选框未选中,第二个复选框未选中。因此,当选中时,有一个checkbox=“checked”属性在未选中时不存在。我不确定我将如何格式化它,以便我能够具体查看我正在寻找的那个盒子。我尝试了(//input[contains(@name='user_5166855'和@checked='checked')),但似乎不起作用 尝试在XPath下面选择 检查一个 //input[@

因此,我正在尝试使用selenium自动化测试,并且需要查看是否选中了特定用户的复选框。页面看起来像这样


第一个用户的复选框未选中,第二个复选框未选中。因此,当选中时,有一个checkbox=“checked”属性在未选中时不存在。我不确定我将如何格式化它,以便我能够具体查看我正在寻找的那个盒子。我尝试了
(//input[contains(@name='user_5166855'和@checked='checked'))
,但似乎不起作用

尝试在XPath下面选择

  • 检查一个

    //input[@name="user_5166855" and @checked]
    
  • 未经检查

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

请注意,
选中的
是布尔属性,因此不需要验证属性的值-验证存在性应该足够了

因此,您已经为第二个用户提供了一个Xpath,您需要做的只是:

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

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

请努力制作一个可复制的示例,同时查看您尝试通过XPath的可能的副本(使用无效语法)通过.name方法执行
。这肯定行不通。另外,您如何知道OP使用Java?您真的应该使用
。Selected
。isSelected()
等,而不是尝试使用定位器执行此操作。请参阅dup I链接。