Selenium Handle timeout driver.wait

时间:2016-06-25 06:02:04

标签: javascript node.js asynchronous selenium-webdriver wait

我正在使用selenium-webdriver,等待页面加载并使用driver.wait进行检查(等待标记显示)。

两件事

  1. 有没有办法通过点击driver.wait上的超时来处理错误(以防止它崩溃服务器)?

  2. 由于我开始怀疑这种方法不合适,这是一个使用driver.sleep然后使用driver.findElement检查标记是否存在的好地方

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

使用promises,我找到了解决问题的方法:

driver.wait(webdriver.until.elementLocated(webdriver.By.tagName(selector)), 10 * 1000, "Timed out")
  .catch(function(e){
    if (e.message.match("Timed out")){
      return e; 
    } else {
      throw e;
    }
  })
  .then(function(e){
    if (e.message && e.message.match("Timed out")){
      driver.quit();
    } else {
      [functional code]
      });
    }
  });

这有点笨拙,因为selenium-webdriver只是在超时时使用throw error而不是命名错误。但它似乎比使用driver.sleep更好。