有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我想提取<ul>下的所有<li>元素文本

我需要点击所有元素的基本,轨道。。。 我的想法是提取列表中的所有元素,然后使用列表计数和循环,我将单击每个元素。 需要检查每个元素是否正常工作,即使添加了新元素,我不想检查代码

<div class="headerarea" style="" xpath="1">
                    <h2>
                        <span id="ctl00_ctl00_phDesktop_lblModuleTitle">Abstract Setup</span>
                    </h2>
                    
                            <ul>
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl01_btnModuleNavigation" class="headerarea_active" href="https://staging.m-anage.com/Modules/Abstract/Setup/basics.aspx">Basic</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl02_btnModuleNavigation" href="https://staging.m-anage.com/testselenium/en-US/Abstract/AbstractSetup/Tracks">Tracks</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl03_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/steps.aspx">WIZARD</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl04_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/keywords.aspx">KEYWORDS</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl05_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/categories.aspx">CATEGORIES</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl06_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/conditions.aspx">CONDITIONS</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl07_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/interests.aspx">Interests</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl08_btnModuleNavigation" href="https://staging.m-anage.com/Modules/Abstract/Setup/templates.aspx">Templates</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl09_btnModuleNavigation" href="https://staging.m-anage.com/testselenium/en-US/Abstract/AbstractSetup/Index">Submission fee</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl10_btnModuleNavigation" href="https://staging.m-anage.com/testselenium/en-US/Mail/MailServerSetup/Index?pModuleType=Abstract" style="">SMTP Setup</a></li>
                            
                        
                            <li>
                                <a id="ctl00_ctl00_phDesktop_rModuleNavigation_ctl11_btnModuleNavigation" href="https://staging.m-anage.com/testselenium/en-US/Abstract/AbstractSetup/Coauthor">Co-author</a></li>
                            
                        
                            </ul>
                        
                </div>

I tried travelling to child path but no success

下面是我尝试过的java代码

    List<WebElement> tags = 
          driver.findElements(By.xpath("//div[@class='headerarea']/ul/li")); 
    for(int i=0;i<tags.size();i++) { 
       while(???) { 
        
     //driver.findElement(By.xpath("//div[@class='headerarea']/ul/li")).click(); 
         }
    }

共 (2) 个答案

  1. # 1 楼答案

    List<WebElement> tags = driver.findElements(By.cssSelector(".headerarea ul>li")); 
    for(WebElement e : tags) {
        e.click();
    }
    
  2. # 2 楼答案

    请尝试以下代码:

    List<WebElement> links = driver.findElements(By.tagName("li"));
    for (int i = 1; i < links.size(); i++)
    {
        System.out.println(links.get(i).getText());
    }
    

    如果您面临同步问题,也可以使用WebDriverWait

     WebDriverWait wait = new WebDriverWait(driver, 10);
     List<WebElement> links = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.tagName(li)));
     for (int i = 1; i < links.size(); i++)
     {
      System.out.println(links.get(i).getText());
     }