Selenium - 注意错误状况并运行快乐路径'测试代码

时间:2017-10-12 14:12:35

标签: selenium selenium-webdriver

每当发生JavaScript错误时,我的应用都会显示错误对话框。这总是一个不好的标志,所以我想设置我的测试,这样,如果出现错误对话框,它会导致测试在那里失败。

所以我想做类似的事情(非常伪代码!);

// start a new 'guard' thread;
start {
  found = this.driver.wait(untilVisible(By.css('.myErrorDialog')), VERY_LONG_TIMEOUT);
  if (found) { 
      // the error dialog appeared! That's bad!
      throw();
  }
}

// now run the test
login();
clickButton();
testBannerContains();

但我遇到了麻烦,我认为这与Selenium安排行动的方式有关。

我发现,对于一个单独的驱动程序,我一次只能安排一件事,所以我在测试早期设置的警卫会阻止测试的主体开始。

有没有更好的方法来处理像这样的条件,这应该永远不会发生,或者是在同一个测试中创建两个独立线程的方法?

1 个答案:

答案 0 :(得分:0)

因此,您所拥有的代码存在的问题是它会立即运行它并等待VERY_LONG_TIMEOUT时间显示该错误对话框。由于它永远不会,它继续等待。你已经发现那不是你想要的......;)

我没有做过这样的事情,但我认为你想要一个JS事件处理程序来监视错误对话框出现时触发的事件。请参阅以下链接以获取一些指导。

Can my WebDriver script catch a event from the webpage?

一种选择是监视该事件,然后在某些JS变量中存储true(或其他)。在离开页面之前,检查变量是否设置为true,如果是,则测试失败。您可以使用JavascriptExecutor设置和获取JS变量。一些谷歌搜索应该可以为您提供使用它所需的一切。