如何为以下HTML代码构造一个定位器?

时间:2019-04-29 13:21:59

标签: list selenium-webdriver xpath webdriver xpath-1.0

我正在学习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 个答案:

答案 0 :(得分:3)

这是您要查找的xpath。

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

ul中有6个li元素,您可以在搜索列表中看到计数为6。

enter image description here

答案 1 :(得分:-1)

要为与文本为工作持续时间的元素相关的<li>元素创建 List ,您需要将文本为的元素标识为作业持续时间,然后找到以下<ul>节点,然后找到其子节点,则可以使用以下Locator Strategy

    基于
  • 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")