Селен получить элемент li на основе позиции индекса и установить флажок - PullRequest
2 голосов
/ 06 февраля 2020

У меня есть это HTML, теперь я использую муравей Selenium I для переключения элемента li с заданной позицией индекса, скажем, 1, где это означает, что я хочу установить флажок переключателя для пружины.

<ul id="todo-list" data-woven="abc">
<li class="active" data-index="0">
    <div class="view">
        <input class="toggle" type="checkbox">
        <label>Java</label>
        <button class="destroy"></button>
    </div>
    <input class="edit">
</li>
<li class="active" data-index="1">
    <div class="view">
        <input class="toggle" type="checkbox">
        <label>Spring</label>
        <button class="destroy"></button>
    </div>
    <input class="edit">
</li></ul>

Я совершенно новый для селена, поэтому не в состоянии понять, как мы можем этого достичь.

Я знаю, как получить UL элементы, используя код:

driver.findElement(By.id("todo-list"));

Теперь, как можно получить li элемент на основе его index и click соответствующего checkbox.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Чтобы щелкнуть элемент флажок относительно атрибута <li> узла индекс предка, вы можете использовать любой из следующих Стратегий локатора :

  • cssSelector :

    driver.findElement(By.cssSelector("ul#todo-list li.active[data-index='1'] input")).click();
    
  • xpath :

    driver.findElement(By.xpath("//ul[@id='todo-list']//li[@class='active' and @data-index='1']//input")).click();
    
1 голос
/ 06 февраля 2020

Вы можете использовать xpath, чтобы найти элемент с data-index=1

driver.findElement(By.xpath("//li[@data-index='1']//input[@class='toggle']"));

или с cssSelector

driver.findElement(By.cssSelector("[data-index='1'] .toggle"));
0 голосов
/ 06 февраля 2020

Вы можете найти элемент, который вы ищете, непосредственно в ответе, который дал вам @Guy, и это было бы правильным способом, если бы вы точно знали, какой атрибут data-index будет установлен, но вы также можете найти коллекцию элементы li, а затем продолжайте делать то, что вам нужно внутри каждого из них, например:

var container = driver.findElement(By.id("todo-list"));

var elements = container.findElements(By.tagName("li"));

с элементами, которые вы можете l oop через каждый или go непосредственно к тому, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...