可见但重叠

时间:2017-06-17 05:16:14

标签: java selenium xpath web-scraping wait

我正在使用selenium创建一个脚本,并在一步显示网页中心的加载图标。第一行执行后出现加载图标

test.driver.findElement(By.id("oaapprove")).click();
test.driver.findElement(By.xpath("//*[text()='DATA EXPLORER']")).click();

image

第二个元素仍然存在于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秒然后执行下一个语句。 等待的原因是什么?

请告诉我如何解决这个问题。

2 个答案:

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