我想要一个方法,它可以等待页面中的所有webelements加载到java(Selenium webdiver)

时间:2016-06-09 06:05:21

标签: java selenium selenium-webdriver

//I have used waits like 
Thread.sleep(2000);

driver.manage().timeouts().pageLoad(100,TimeUnit.seconds);

driver.manage().timeouts().explicitlywait(10,TimeUnit.seconds);

WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityof(element));

我关心的是在Grid中运行大量脚本     由于等待问题,一些人通过了一些失败     所以我想要一个可以处理这种场景的用户定义方法,即一种等待页面的所有元素加载的方法,这样可以有效地用于显示“无法找到元素”或“无法点击一个元素”等错误的方法元素其他元素将收到点击“。 /

1 个答案:

答案 0 :(得分:0)

你永远不应该使用计时器等待你的页面加载,因为你永远不知道渲染速度有多快,那么在这种情况下我建议你2个方法:

  1. 使用selenium的waitFor方法,其中驱动程序将等待直到存在元素,您可以设置默认等待的最大时间,默认为6秒。对于这种方法,您需要知道哪个元素意味着页面已满载

    waitFor(ExpectedConditions.presenceOfElementLocated(By.id("yourExpectedIdElement")));
    
  2. 如果您需要检查所有JS代码是否已加载,您还可以在document.ready()JS中添加一行,其中向主体添加隐藏元素,然后是您将等待的属性你的考试。

    $document.ready(){
        //Add a hidden element to the body  
    }
    
    waitFor(ExpectedConditions.presenceOfElementLocated(By.id("createdElement")));