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



我正试图用seleniumjava自动化一个web应用程序,这是我一直收到的消息org.openqa.selenium.ElementClickInterceptedException:元素在点(85,37)处不可点击,因为其他元素在所有浏览器中都会遮挡它。

我尝试了所有的等待,明确等待20秒似乎有效,但通常也会失败。此外,这种情况几乎发生在应用程序的每个元素之前,我认为在每个元素之前应用显式等待或线程睡眠是一种很好的做法。

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=预加载

我会首先检查预加载程序是否显示,然后等待其不可见。这可能会使执行速度变慢,但它是故障安全的。

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

相关内容

最新更新