Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Selenium WebDriver打印下拉列表的所有li项文本?_Java_Eclipse_Selenium_Selenium Webdriver - Fatal编程技术网

Java 如何使用Selenium WebDriver打印下拉列表的所有li项文本?

Java 如何使用Selenium WebDriver打印下拉列表的所有li项文本?,java,eclipse,selenium,selenium-webdriver,Java,Eclipse,Selenium,Selenium Webdriver,如何使用seleniumwebdriver打印所有li项目文本。 在这里,我想使用某种类型的单行代码来打印所有li项,如文本 夹克 保护等可通过使用for回路实现 <div class="dropdown change_right"> <ul> <li> <a class="" title="Jackets" href="/collections/jackets">Jackets</a&g

如何使用selenium
webdriver
打印所有
li
项目文本。 在这里,我想使用某种类型的单行代码来打印所有
li
项,如文本

  • 夹克
  • 保护等可通过使用for回路实现

    <div class="dropdown  change_right">
     <ul>            
        <li>
            <a class="" title="Jackets" href="/collections/jackets">Jackets</a> 
        </li>
        <li>
            <a title="Jackets protective" href="/collections/jackets/jackets-protective" class="sub-link"> protective</a>
        </li>
        <li> 
            <a title="casual leather" href="/collections/jackets/casual-leather" class="sub-link">casual leather</a>
        </li>
        <li>
            <a class="" title="T-shirts &amp; shirts " href="/collections/t-shirts-shirts">T-shirts &amp; shirts </a>
        </li>
        <li> 
            <a title="shirts" href="/collections/t-shirts-shirts/shirts" class="sub-link">shirts</a>
        </li>
        <li>
            <a title="crew-neck" href="/collections/t-shirts-shirts/crew-neck" class="sub-link">crew-neck</a>
        </li>
        <li>
            <a title="polo tshirts" href="/collections/t-shirts-shirts/polo-tshirts" class="sub-link">polo tshirts</a>
        </li>
        <li>
            <a class="" title="Trousers" href="/collections/trousers">Trousers</a>
        </li>
        <li>
            <a title="Trousers Protective" href="/collections/trousers/trousers-protective" class="sub-link"> Protective</a>
        </li>
    </ul>
    
    
    


可以通过简单的
findElements()
完成。借助于
xpath
获取
元素的集合
,并在
getText()
的帮助下简单迭代该集合并打印值,该函数返回元素的字符串值

List<WebElement> allText = driver.findElements(By.xpath("//*[contains(@class,'dropdown')]//a"));
for ( WebElement element: allText) { 
    System.out.println(element.getText());
}
List allText=driver.findElements(By.xpath(“//*[contains(@class,'dropdown')]///a”);
for(WebElement:allText){
System.out.println(element.getText());
}

注意:未测试的代码。您可能需要确保在执行此代码之前单击并打开列表,并且可能还需要一些等待

您可以获取整个类属性值或部分属性值,如
class='foo foo2'
您可以使用
/*[contains(@class,'foo2')]///a
/*[contains(@class,'foo')]///a
。让我知道这是否是你想要的。这个代码是正确的。但我的菜单下拉项是隐藏的,当下拉父菜单项悬停在鼠标图标上时,这些项是可见的。请为此尝试
Action builder
。这是一个解决悬停问题的方法。
By byXpath=By.xpath(“元素悬停的xpath”)WebElement element=driver.findelelement(By.xpath(byXpath));动作动作=新动作(驱动);action.moveToElement(element.build().perform()