如何处理 <div id="preloader"> 用硒掩盖其他元素,检查其他答案没有任何帮助

how to handle <div id="preloader"> obscuring other elements with selenium, checked other answers nothing helped

我正在尝试使用 selenium java 自动化 Web 应用程序,这是我不断收到的消息 org.openqa.selenium.ElementClickInterceptedException:元素在点 (85,37) 不可点击,因为另一个元素模糊了它在所有浏览器中。

我尝试了所有等待,显式等待 20 秒似乎有效,但也经常失败。此外,这几乎发生在应用程序的每个元素之前,我认为在每个元素之前应用显式等待或 Thread.sleep 是一个很好的做法。

    driver.findElement(By.xpath("//span[contains(text(),'Agent Corrections')]")).click();

    WebDriverWait wait1 = new WebDriverWait(driver, 20);
    wait1.until(ExpectedConditions.invisibilityOfElementLocated(By.id("preloader")));

    String expectedText = "";
    String actualText = driver.findElement(By.cssSelector("#users_management > div.panel-heading > h4")).getText();
    Assert.assertEquals(expectedText, actualText);

    driver.findElement(By.xpath("//span[contains(text(),'')]")).click();

    driver.findElement(By.xpath("//span[contains(text(),'')]")).click();

    wait1.until(ExpectedConditions.invisibilityOfElementLocated(By.id("preloader")));
    driver.findElement(By.id("pcc")).sendKeys("");
    driver.findElement(By.id("pnr")).sendKeys("");
    driver.findElement(By.id("FFFormSubmit")).click();

    wait1.until(ExpectedConditions.invisibilityOfElementLocated(By.id("preloader")));

元素遮蔽是用 div id = preloader

我会先检查预加载器是否显示,然后等待其隐身。这可能会使执行速度变慢,但它是安全的。

driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS) // this will make wait time of 5 seconds for each element including preloader.

WebDriverWait wait1 = new WebDriverWait(driver, 20);
 if(driver.findElement(By.id("preloader")).isDisplayed())
{    wait1.until(ExpectedConditions.invisibilityOfElementLocated(By.id("preloader")));
}