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
变量。