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)"))));