0

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

我能想到的唯一一件事是在 Selenium 或 Robot 执行命令和它能够监听来自浏览器的 HTTP 响应之间存在延迟,并且在Selenium 准备好监听它之前加载页面。这是在 Intranet 上运行的,因此页面加载时间非常快。我从未见过在 SauceLabs VM 上运行相同的脚本时会发生此问题,因为我们和他们之间的隧道会增加很多延迟。

假设我的理论是正确的,我该怎么办(除了明显运行较慢的连接)?在 Selenium 中设置延迟只会减慢执行速度,并不会真正影响问题。

4

2 回答 2

0

尝试:

Set Selenium Implicit Wait  60
Set Browser Implicit Wait  60

数字 60 是 selenium/浏览器默认等待的秒数。

于 2013-02-27T16:32:46.510 回答
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); 在您可以单击或验证文本等之前

于 2013-01-18T11:54:41.260 回答