Java Selenium-在清除搜索过滤器后,仅声明一个CSS类处于活动状态

时间:2018-10-16 08:45:11

标签: java selenium automation

我想知道是否有更好的方法来重构场景代码。 在搜索结果页面上选择“清除过滤器”按钮后,将保留一种活动状态:

<li class="filter-options__item">
    <button class="filter-swatch filter-swatch--orange is-selected" data-filter="" data-filter-name="orange" data-ga-category="Colours Option" data-ga-action="orange" data-ga-label="10">
       <p class="filter-swatch__name"> orange</p> </button></li>

将is-selected设为过滤色板的活动状态。

我目前有一个计数断言,可以看到如下所示选择了正确数量的过滤器:

int count = 0;
    List<WebElement> elements = driver.findElements(By.cssSelector(".filter-options__item > button"));

    for (Iterator<WebElement> i = elements.iterator(); i.hasNext();) {
        WebElement element = i.next();
        String attr = element.getAttribute("class");

        if(attr.contains("is-selected")) {
            count++;
        }
    }
    Assert.assertEquals(1, count);

我只是想知道这是最佳实践还是有更好的方法来确认这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用以下指定的类直接获取按钮元素,而无需使用循环来检查按钮是否具有“已​​选中”类。

List<WebElement> elements = driver.findElements(By.cssSelector(".filter-options__item > button.is-selected"));
Assert.assertEquals(1, elements.size());