首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Selenium和Java识别<a>中的文本

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

Stack Overflow用户
提问于 2022-02-15 11:40:31
回答 2查看 101关注 0票数 2

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

代码语言:javascript
复制
 <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>

我希望获得这些子类别的文本,以便以后可以使用链接元素中的文本单击特定类别。我的代码是:

代码语言:javascript
复制
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()是空的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-15 22:04:43

要单击文本为,首先必须将元素为Men WebDriverWait for visibilityOfElementLocated,您可以使用以下

代码语言:javascript
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2022-02-15 11:52:47

element.getText()可以是空的。

尝试:

代码语言:javascript
复制
element.getAttribute("value");
// or
element.getAttribute("innerHTML");

将CSS更改为:

代码语言:javascript
复制
"a[class*='level']";
// or
"a[]";

调试代码并检查元素是否为空。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71125803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档