java - Selenium Java-检查是否存在Weblist元素

原文 标签 java selenium selenium-webdriver automation ui-automation

我需要自动化一个方案,当时我需要单击展开所有按钮并检查所有过滤器是否展开,然后单击折叠所有按钮并检查所有过滤器是否折叠。

我使用的方法是将所有过滤器放入一个Web列表中,获取其大小,然后使用assert方法检查其非空值,但要检查折叠功能,则该方法失败。

有没有一种方法可以检查webelements列表的可见性或存在性,就像我们为单个webelement拥有isDisplayed()一样?

以下是我尝试过的上述逻辑的代码:

driver.findElement(By.linkText("Expand All")).click();
Thread.sleep(3000);
System.out.println("Clicking on the Expand All option");

Assert.assertFalse(driver.findElements(By.cssSelector("input[type='checkbox']")).isEmpty(),"The Filters are not expanded"); 

int filters_max_size=driver.findElements(By.cssSelector("input[type='checkbox']")).size();

System.out.println("There are total "+filters_max_size+ "filters expanded");

System.out.println("Clicking on the Collapse All option");
Reporter.log("Clicking on the Collapse All option");

driver.findElement(By.id("collapse_all")).click();
Thread.sleep(3000);

Assert.assertTrue(driver.findElements(By.cssSelector("input[type='checkbox']")).isEmpty(),"The Filters are not collapsed"); 
Assert.assertEquals(0, driver.findElements(By.cssSelector("input[type='checkbox']")).,"The Filters are not collapsed");


<a class="refinement_anchor" href="/search?button=search&expand_all=5B%5D=%7B%22s%22%3A%5B%7B%22id%22%3A%22%22%2C%22xPath%22%3A%22%24source_type%22%2C%22logic%22%3A%22OR%22%2C&utf8=%E2%9C%93">
<input id="refinement_214391870" class="flex" type="checkbox" name="refinement_214391870">
<label class="text" for="refinement_214391870">
<div class="text refinement_information">
<span class="label" data-token="{"s":[{"id":"refine_source_type","xPath":"$source_type","logic":"OR","s":[{"n":"Selective"}]}]}" title="Selective"> Selective </span>
<span class="ndocs"> (136,292) </span>
</div>
</label>
</a>
</li>
<li class="text no_children ">
</ul>
<a class="show_all" href="/search/show_all?button=search&id=&q=&types=&utf8=%E2%9C%93&widget_id=refine_source_type">Show all</a>
</div>

最佳答案

您可以尝试如下操作:

 driver.findElement(By.id("collapse_all")).click();
 Thread.sleep(3000);

WebElement allFilters = driver.findElements(By.cssSelector("input[type='checkbox']"));
for(WebElement filter : allFilters) {

 if(filter.isDisplayed()){

   System.out.println(filter.getText() + " is still displayed." );
   break;
 }}

关于java - Selenium Java-检查是否存在Weblist元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43201824/

相关文章:

java - 继承 - 从 Employee 类创建一个 Commission Employee 类并进行测试

java - 通过 maven 命令设置 config.properties 值

python - 将表头分配为 Python 字典中的键

java - Selenium -如何获取元素及其子元素文本

java - Log4j 和 syslogappender

java - JVM 是否在系统中存储内存?如果是,如何清除?

python - 如何使用 Selenium 连接到 icloud.com?

java - 如何在 Java8 中使用 selenium 切换回父窗口

java - 如何使用Javac将类导入Java程序?

python - Selenium 不会加载完整的 DOM 树,只会加载页面源