脚本挂起,因为页面加载太快?

时间:2013-01-17 19:55:05

标签: selenium-webdriver robotframework

在单击链接或元素导致页面转换的情况下,我发现Robot Framework或Selenium Webdriver存在问题。脚本挂起&停止运行,好像它正在尝试&即使窗口成功处理了单击,也无法单击所请求的元素/链接。手动刷新Webdriver窗口以重新加载页面启动脚本并从那里恢复。

我唯一能想到的是Selenium或Robot执行命令之间以及它能够从浏览器侦听HTTP响应之间的延迟,并且页面正在之前加载 / em> Selenium已准备好倾听它。这是在Intranet上运行,因此页面加载时间非常快。自从我们和我之间的隧道在SauceLabs VM上运行相同的脚本后,我从未见过这个问题。它们增加了很多延迟。

假设我的理论是正确的,我该怎么办呢(除了明显的慢速连接)?在Selenium中设置延迟只会降低执行速度并且不会对问题产生任何影响。

2 个答案:

答案 0 :(得分:0)

你可以尝试流利的等待......

  public static WebElement fluentWait(final By locator, RemoteWebDriver rwd){
  Wait<WebDriver> wait = new FluentWait<WebDriver>(rwd)
          .withTimeout(30, TimeUnit.SECONDS)
          .pollingEvery(2, TimeUnit.SECONDS)
          .ignoring(NoSuchElementException.class);

  WebElement foo = wait.until(
          new Function<WebDriver, WebElement>() {
              public WebElement apply(WebDriver driver) {
                  return driver.findElement(locator);
              }
          }
    );
    return  foo;              
    };

这将每2秒轮询一次并等待最多30秒

在你的测试中你等待一个元素,例如fluentWait(By.className(“home”),driver); 在您点击或验证文本等之前

答案 1 :(得分:0)

尝试:

Set Selenium Implicit Wait  60
Set Browser Implicit Wait  60

数字60是selenium / browser默认等待的秒数。