Как построить локатор для следующего HTML-кода? - PullRequest
0 голосов
/ 29 апреля 2019

Я учусь философии xpath. Большинство найденных примеров, в некотором смысле, стандартные, и поиск xpath вручную может быть легким. В следующем HTML-коде я не могу понять, как мне найти xpath Длительность задания и затем создать список элементов для элементов li.

<div class="box rounded6">
   <h3 class="s_filter_title">Job Duration :</h3>
   <ul>
      <li><label><input type="checkbox" class="" name="">Contract</label></li>
      <li><label><input type="checkbox" class="" name="">Full Time </label></li>
      <li><label><input type="checkbox" class="" name="">Part Time </label></li>
      <li><label><input type="checkbox" class="" name="">Internship</label></li>
      <li><label><input type="checkbox" class="" name="">Temporary</label></li>
      <li><label><input type="checkbox" class="" name="">Temp To Perm</label></li>
   </ul>
</div>

Ответы [ 2 ]

3 голосов
/ 29 апреля 2019

Вот xpath, который вы ищете.

//h3[.='Job Duration :']/following-sibling::ul/li//input

В ul есть 6 li элементов, в списке поиска их количество равно 6.

enter image description here

0 голосов
/ 29 апреля 2019

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

  • Java решение на основе:

    • xpath1 :

      List<WebElement> myElements = driver.findElements(By.xpath("//h3[text()='Job Duration :']//following::ul[1]//li"));
      
    • xpath2 :

      List<WebElement> myElements = driver.findElements(By.xpath("//h3[contains(., 'Job Duration')]//following::ul[1]//li"));
      
  • Решение на основе Python :

    • xpath1 :

      my_elements = driver.find_elements_by_xpath("//h3[text()='Job Duration :']//following::ul[1]//li")
      
    • xpath2 :

      my_elements = driver.find_elements_by_xpath("//h3[[contains(., 'Job Duration')]//following::ul[1]//li")
      
...