Selenium javascript webdriver如何使用findElements

时间:2016-08-02 13:05:17

标签: javascript selenium

想要点击第二个ul中的第三个li:

   <ul id="select-123" style="width: 1180px; display: none;">
   <li class="" style="display:none;">
   <li class="">
   <li class="">
   <li class="">
   </ul>

   <ul id="select-123" style="width: 1180px; display: none;">
   <li class="" style="display:none;">
   <li class="">
   <li class="">
   <li class="">
   </ul>

我正在尝试的代码是从第二个ul中选择第三个li,它不起作用:

    driver.findElements(By.css(ul[id*='select-123'])).then(function(elems) {
    elems[2].then(function(lis) {
    driver.findElement(By.css("ul[id*='select-123'] li:nth-child(3)")).click();
    });
    });

3 个答案:

答案 0 :(得分:1)

尝试使用XPath

driver.findElement(By.xpath('//ul[2]/li[3]'))

答案 1 :(得分:1)

除了@Andersson的答案之外,你还犯了两个ID的错误。在HTML中,IDs should be unique。简单地拥有一个唯一的ID就可以避免这种情况,但如果你无法控制HTML,而其他人编写了错误的HTML,那么Andersson的XPath解决方案就会很好。

答案 2 :(得分:1)

实际上你是在列表中找到元素,然后你在列表中使用第二个ul元素,但是当你要找到第二个ul元素的子元素时,你提供{{1这将从整个页面中找到,因此您需要在第二个driver.findElement元素上下文中找到元素,如下所示: -

ul

希望它有效.. :)