Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Java 无法按属性或文本跟踪元素_Java_Testing_Selenium Webdriver_Webdriver - Fatal编程技术网

Java 无法按属性或文本跟踪元素

Java 无法按属性或文本跟踪元素,java,testing,selenium-webdriver,webdriver,Java,Testing,Selenium Webdriver,Webdriver,我在点击菜单中的一个元素时遇到问题,该元素是这样写的: <div class="menu"> <ul class="tabs ctrlTabsProfile"> <li class="active" data-tab="tabDetail">User Details</li> <li data-tab="tabEmail">Email</li> <li data-tab="tabPass">Change pass

我在点击菜单中的一个元素时遇到问题,该元素是这样写的:

<div class="menu">
<ul class="tabs ctrlTabsProfile">
<li class="active" data-tab="tabDetail">User Details</li>
<li data-tab="tabEmail">Email</li>
<li data-tab="tabPass">Change password</li>
<li data-tab="tabAdress">Account Details</li>
</ul>
</div>
还尝试列出元素,但仅得到
null

for(WebElement el : driver.findElements(By.cssSelector(".tabs.ctrlTabsProfile"))) {

        try {
            assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*Account Details[\\s\\S]*$"));
        } catch (Error e) {
            System.out.println("Not found: \"Account Details\".");
          }

    String s = el.getAttribute("data-tab");
    System.out.println(s);
    if(s.equals("tabAdress")) {
        driver.findElement(By.xpath("li[data-tab='tabAdress']")).click();
    }
   }

解决方案?建议?错误?

首先,您的xpath选择器不正确

driver.findElement(By.xpath("li[data-tab='tabAdress']")).click();
应该是:

driver.findElement(By.xpath("//li[@data-tab='tabAdress']")).click();
driver.findElement(By.cssSelector("li[data-tab='tabAdress']")).click();
编辑:

你的css选择器也不正确

driver.findElement(By.cssSelector("li[data-tab=tabAdress")).click();
应该是:

driver.findElement(By.xpath("//li[@data-tab='tabAdress']")).click();
driver.findElement(By.cssSelector("li[data-tab='tabAdress']")).click();
编辑#2:

以及:


仅当元素是链接时才有效,而在本例中不是链接。

a正确,
driver.findElements(By.cssSelector(“.tabs.ctrlTabsProfile”)
将仅返回
ul
元素。要访问所有
  • ,您可以尝试:

    driver.findElements(By.cssSelector("ul.tabs.ctrlTabsProfile li.active"))
    

    这三个标签是否总是显示出来,或者你必须点击男人才能显示出来?同样,我也不确定你想用你的代码块实现什么,但是我可以通过浏览它和你粘贴的html来判断它不会工作。您正试图从.ctrlTabsProfile对象检索数据选项卡属性,但该对象没有该属性。您的findElements调用将只返回一个元素,因为您的选择器只是选择列表项的父项。您是对的,非常感谢,祝您愉快!是的,很好的观点,我可能找不到,谢谢你,祝你度过愉快的一天!