【问题标题】:WebDriver filtering list of elementsWebDriver 过滤元素列表
【发布时间】:2013-12-04 02:58:41
【问题描述】:

如何有效地查找和过滤元素列表。 这是 HTML

<span class="tab-strip-text" unselectable="on">Admin</span>
<span class="tab-strip-text" unselectable="on">User</span>
<span class="tab-strip-text" unselectable="on">Reports</span>
<span class="tab-strip-text" unselectable="on">Logs</span>

目前我正在使用以下方法根据文本查找和过滤并单击我想要的元素

public static void clickTab(String tabText){
  List<WebElement> tabs = driver.findElements(By.className("tab-strip-text"));      
    for(WebElement tab : tabs){
        if(tab.getText().equals(tabText)){
            tab.click();
            break;
        }
    }       
}

有没有更好的方法来查找和遍历列表(基于元素的 text() 点击?)

谢谢

【问题讨论】:

    标签: java selenium webdriver selenium-webdriver


    【解决方案1】:

    将 XPath 与定位器中的文本结合使用。

    //*[@class='tab-strip-text' and text()='Reports']
    

    那么你有:

    WebElement reportTab = driver.findElement(By.xpath("//*[@class='tab-strip-text' and text()='Reports']"));
    reportTab.click();
    

    注意,如果您的网站支持多语言,我不鼓励您在定位器中使用文本。在这种情况下,最好的方法是为每个元素的源添加有意义的类名。

    【讨论】:

    • @aeinstein83:您对此有什么反馈吗?它对你有用吗?
    【解决方案2】:

    试试这个 xpath

        //span[contains(text(),'Reports')]
    
    String value="text you are looking for";
    
    public void method(String value){
    driver.findElements(By.xpath( //span[contains(text(),'"+value+"')])).click();
    }
    

    【讨论】:

    • 谢谢,但我不认为click() 方法是为List&lt;WebElement) 定义的
    【解决方案3】:

    我知道这篇文章很久以前,但我想有人会寻找解决方案:)

    tabs.forEach(tab -> {
        if(tab.getText().equals(tabText)){
            tab.click();
        }
    }
    

    【讨论】:

      【解决方案4】:

      我正在使用流过滤器()。这将帮助您根据给定的文本点击元素。

      filter 返回一个由该流中与给定谓词匹配的元素组成的流。

      List<WebElement> categories = driver.findElements(By.className("tab-strip-text"));
      categories.stream().filter(ele->ele.getText().equalsIgnoreCase("Admin")).forEach(ele -> ele.click());
      

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 2013-07-18
        • 2018-07-14
        • 1970-01-01
        • 1970-01-01
        • 2019-04-28
        • 2013-06-28
        • 2011-02-09
        相关资源
        最近更新 更多