对于页面的所有面板,waitForElementToDisappear

时间:2016-03-21 12:14:15

标签: selenium css-selectors

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

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

崩溃前的

代码

<div class="panel-collapse collapse in" style="height: auto;">
崩溃后的

代码

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

2 个答案:

答案 0 :(得分:1)

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

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

".panel-heading:not(.in) + .panel-collapse:not(.in)"

然后等待lambda表达式:

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

或使用预期条件:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.not(ExpectedConditions.presenceOfAllElementsLocatedBy(
    By.cssSelector(".panel-heading:not(.in) + .panel-collapse:not(.in)"))));

答案 1 :(得分:0)

您可以尝试使用此java方法等待60秒以使所有面板崩溃

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) {
       }