我正在使用selenium创建一个脚本,并在一步显示网页中心的加载图标。第一行执行后出现加载图标
test.driver.findElement(By.id("oaapprove")).click();
test.driver.findElement(By.xpath("//*[text()='DATA EXPLORER']")).click();
第二个元素仍然存在于DOM中,但它不可点击,因此我收到错误,因为无法点击
我试过这个:
Boolean isPresent=test.driver.findElements(By.xpath("//div[@class='spinner-container']")).size() > 0;
if(isPresent)
{
System.out.println("Target element found");
}
while(test.driver.findElements(By.xpath("//div[@class='spinner-container']")).size() > 0)
{
try {
System.out.println("inside");
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(!(test.driver.findElements(By.xpath("//div[@class='spinner-container']")).size() > 0))
{
System.out.println("Target element not found");
}
正在打印"内部"直到加载图标可见,但在图标消失后,它不会打印"内部"但它等待7-8秒然后执行下一个语句。 等待的原因是什么?
请告诉我如何解决这个问题。
答案 0 :(得分:0)
尝试使用动作类,如果它使用fluentwait显示该元素是可点击的:
WebElement yourElement = test.driver.findElement(By.xpath("//*[text()='DATA EXPLORER']"));
Actions act = new Actions(test.driver);
act.moveToElement(yourElement).click().build().perform();
答案 1 :(得分:0)
我得到了解决方案,并使用了stalenessOf
new WebDriverWait(driver, 10).until(ExpectedConditions.stalenessOf(findElement(By.xpath("element_path"))));