2016-08-02 2 views
0

Хотите, чтобы нажать на третий ли от второй ул:Селен Javascript WebDriver как использовать findElements

<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> 

код Я пытаюсь это выбрать третий Ли из второго ул который не работает:

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(); 
    }); 
    }); 
+1

у вас есть два элемента с одинаковым идентификатором, идентификаторы должны быть уникальными – Quince

ответ

1

Попробуйте использовать XPath:

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

в дополнение к ответу по @Andersson вы сделали т он ошибся иметь два удостоверения личности. В HTML, IDs should be unique. Просто наличие уникального идентификатора во избежание этого в первую очередь, но если у вас нет контроля над HTML, а кто-то другой написал плохой HTML, решение XPath от Andersson было бы хорошим.

0

На самом деле вы найти элементы в виде списка, то вы используете второй ul элемент из списка, но когда вы собираетесь найти дочерний элемент второго ul элемента, вы обеспечиваете driver.findElement которые найдут от всей страницы, так что вместо это вам нужно найти элемент на втором контексте ul элемента, как показано ниже: -

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

Надеется, что это работает .. :)

Смежные вопросы