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;">
答案 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) {
}