Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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—在清除搜索过滤器后,仅断言一个CSS类是活动的_Java_Selenium_Automation - Fatal编程技术网

Java Selenium—在清除搜索过滤器后,仅断言一个CSS类是活动的

Java Selenium—在清除搜索过滤器后,仅断言一个CSS类是活动的,java,selenium,automation,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-act

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

<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>
  • 橙色

  • 当选定为过滤器样例上的活动状态时

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

    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);
    
    int count=0;
    列表元素=driver.findElements(按.cssSelector(“.filter-options\uuu item>按钮”);
    for(迭代器i=elements.Iterator();i.hasNext();){
    WebElement=i.next();
    字符串attr=element.getAttribute(“类”);
    如果(属性包含(“已选择”)){
    计数++;
    }
    }
    Assert.assertEquals(1,计数);
    

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

    不必使用循环来检查按钮是否具有“is selected”的类,您可以使用下面指定的类直接获取按钮元素

    List<WebElement> elements = driver.findElements(By.cssSelector(".filter-options__item > button.is-selected"));
    Assert.assertEquals(1, elements.size());
    
    List elements=driver.findElements(By.cssSelector(“.filter-options\uuu item>button.is selected”);
    Assert.assertEquals(1,elements.size());
    
    您可以使用下面指定的类直接获取button元素,而不是使用循环检查button是否具有“is selected”的类

    List<WebElement> elements = driver.findElements(By.cssSelector(".filter-options__item > button.is-selected"));
    Assert.assertEquals(1, elements.size());
    
    List elements=driver.findElements(By.cssSelector(“.filter-options\uuu item>button.is selected”);
    Assert.assertEquals(1,elements.size());
    
    这个问题是基于意见的,因此SO的主题不明确。话虽如此,你的方法似乎还不错。这方面没有“最佳实践”,只有“是否有效实践”。这个问题是基于观点的,因此与SO无关。话虽如此,你的方法似乎还不错。这方面没有“最佳实践”,只有“DoItWorkPractice”。我简化了您的代码。不需要先初始化变量,然后再分配几行给它。当您可以轻松使用
    elements.size()
    时,这里也根本不需要
    count
    变量。我简化了您的代码。不需要先初始化变量,然后再分配几行给它。当您可以轻松使用
    elements.size()
    时,这里也根本不需要
    count
    变量。