【问题标题】:How find all items on the header section on WebSite?如何在网站的标题部分找到所有项目?
【发布时间】:2021-12-21 22:38:12
【问题描述】:

我有这个代码:

<ul class="sidebar-menu left">
    <li index="1">Apple</li>
    <li index="2">Orange</li>
    <li index="3">Banana</li>
</ul>

如何将此列表(所有 li)添加到 List

【问题讨论】:

    标签: java selenium webdriver


    【解决方案1】:

    要打印所有标题部分文本,您需要为visibilityOfAllElementsLocatedBy() 引入WebDriverWait,您可以使用Java8 stream()map(),您可以使用以下任一@ 987654325@:

    • 使用 cssSelectorgetText():

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("ul.sidebar-menu.left li"))).stream().map(element->element.getText()).collect(Collectors.toList()));
      
    • 使用 xpathgetAttribute("innerHTML"):

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//ul[@class='sidebar-menu left']//li"))).stream().map(element->element.getAttribute("innerHTML")).collect(Collectors.toList()));
      

    【讨论】:

      【解决方案2】:

      你可以使用findElements方法。

          ArrayList<String> fruitNames = new ArrayList<String>();
          List<WebElement> fruits = driver
                  .findElements(By.xpath("//ul[contains(@class,'sidebar-menu left')]//child::li[@index]"));
      
          for (WebElement element : fruits) {
              fruitNames.add(element.getText());
          }
      

      【讨论】:

        【解决方案3】:

        如果这个类是唯一的

        sidebar-menu left
        

        那么你可以构建这个

        1. css选择器

          ul.sidebar-menu.left li
          
        2. xpath

          //ul[contains(@class,'sidebar-menu left')]//child::li[@index]
          

        child 只是规范,你也可以删除它

        //ul[contains(@class,'sidebar-menu left')]//li[@index]
        

        它们应该代表 HTMLDOM 中的多个节点,在本例中为 3。

        要添加到网络元素列表,只需使用findElements(复数)

        List<WebElement> elems = driver.findElements(By.xpath("//ul[contains(@class,'sidebar-menu left')]//child::li[@index]"));
        

        如果您想检索网络元素文本,

        for (WebElement e : elems){
               e.getText();
            }
        

        【讨论】:

          【解决方案4】:

          findElementsxpath 一起使用

          xpath = "//ul[@class ='sidebar-menu left']//li"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多