java - 如何使用 Selenium 和 Java 识别 <a> 中的文本

标签 java selenium selenium-webdriver webdriverwait mousehover

这是我要测试的演示商店的代码:

 <li class="level0 nav-2 parent">
      <a href="http://demo-store.seleniumacademy.com/men.html" 
               class="level0 has-children">Men</a> 
        <ul class="level0">
            <li class="level1 view-all">
               <a class="level1" href="http://demo- 
                         store.seleniumacademy.com/men.html">View All 
                         Men</a>
            </li>
               <li class="level1 nav-2-1 first"><a></a></li>
               <li class="level1 nav-2-2"><a href="http://demo- 
                          store.seleniumacademy.com/men/shirts.html" 
                          class="level1">text to get</a> 
               </li>
               <li class="level1 nav-2-3"><a></a></li>
         </ul>
    </li>

我想获取这些子类别的文本,以便稍后可以使用链接元素内的文本单击特定类别。我的代码是:

public Subcategory openSubcategory (String subcategoryName){

    List<WebElement> subcategories = driver.findElements(By.cssSelector("a.level1"));

    for (WebElement element: subcategories) {
        if (element.getText().equals(subcategoryName)){
            element.click();
            break;
        }
    }
    return new Subcategory(driver);
}

但它不会进入循环,可能是因为 element.getText() 为空。

最佳答案

点击WebElement文本为 衬衫 首先,您必须 Mouse Hover文本为 Men 的元素,诱导 WebDriverWait对于 visibilityOfElementLocated您可以使用以下 locator strategies :

public Subcategory openSubcategory (String subcategoryName){

    WebElement menuMen = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(@class,'has-children') and text()='Men']")));
    new Actions(driver).moveToElement(menuMen).build().perform();
    List<WebElement> subcategories = driver.findElements(By.xpath("//a[contains(@class,'has-children') and text()='Men']//following::ul[1]//li/a"));
    for (WebElement element: subcategories) {
        if (element.getText().equals(subcategoryName)){
            element.click();
            break;
        }
    }
    return new Subcategory(driver);
}

关于java - 如何使用 Selenium 和 Java 识别 <a> 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71125803/

相关文章:

java - 将 UTF-8 PDF 字体获取到用 Java/Spring 编译的 JasperReports 3.7.* 报告中

python - Selenium 中的定位器和 Webelement 有什么区别?

java - WebDriver 过滤元素列表

python - 如何使用 Selenium 单击打开的应用程序警报

Java TCP/IP 套接字

java - 使用单例或新对象实例有什么区别吗?

java - Picasso 无法加载图像但没有提供错误消息?

python - 如何从 Twitter 页面探索中提取主题标签?

java - 用于衡量 UI 性能的工具

java - BrowserStack 错误- [browserstack.local] 设置为 true 但未连接通过 BrowserStack 的本地测试