Selenium waitForElementToDisappear用于页面的所有面板

Selenium waitForElementToDisappear用于页面的所有面板,selenium,css-selectors,Selenium,Css Selectors,上面的代码等待页面的第一个面板。我想等待所有的面板倒塌。我如何围绕此运行循环。以等待页面的所有面板 崩溃前的代码 By panelCollapseSelector = By.cssSelector(".panel-heading+.panel-collapse"); waitForElementToDisappear(panelCollapseSelector); 崩溃后的代码 <div class="panel-collapse collapse in" style="height

上面的代码等待页面的第一个面板。我想等待所有的面板倒塌。我如何围绕此运行循环。以等待页面的所有面板

崩溃前的代码

By panelCollapseSelector = By.cssSelector(".panel-heading+.panel-collapse");
waitForElementToDisappear(panelCollapseSelector);

崩溃后的代码

<div class="panel-collapse collapse in" style="height: auto;">

您可以尝试这种java方法,等待60秒,让所有面板都折叠起来

<div class="panel-collapse collapse" style="height: 0px;">

一个简单的解决方案是等待0个元素与未折叠的面板匹配

一个可能的CSS选择器可以获取所有未折叠的面板:

int timeout=60;
while(driver.findElement(By.cssSelector(".panel-heading+.panel-collapse")).getAttribute("style").contains("height: auto;") && timeout > 0) {                        
try {
    if(timeout>1)
        {
        timeout--;
        System.out.println("====== Waiting for Collapsing Panels ======");                               
        Thread.sleep(1000);
        }

    }
    catch(Exception e) {
       }
然后使用lambda表达式等待:

".panel-heading:not(.in) + .panel-collapse:not(.in)"
或使用预期条件:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until((WebDriver drv) -> drv.findElements(By.cssSelector(
    ".panel-heading:not(.in) + .panel-collapse:not(.in)")).size() == 0);

对于尚未折叠的面板,html是什么样子的?“对于已经倒塌的面板呢?”BreaksSoftware补充道。
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.not(ExpectedConditions.presenceOfAllElementsLocatedBy(
    By.cssSelector(".panel-heading:not(.in) + .panel-collapse:not(.in)"))));