我的硒代码上的量角器

时间:2018-07-30 14:01:57

标签: selenium protractor

我用Selenium编写了用于自动执行应用程序的代码[其加载时间有所不同],并且当我们使用Thread.sleep作为加载时间时,它可以正常工作。我需要移出thread.sleep,因为这并不理想编写代码的方式,因此我尝试使用Selenium给出的所有等待(隐式,显式和流畅)。

尽管脚本不一致,并且经常失败[主要是找不到元素和过时的元素异常],所以需要知道,因为我在Selenium中拥有所有框架和代码,因此我必须遵守以下规定:可以在其中导入量角器jar文件并使用一些代码行,以使我的应用程序与脚本同步。

2 个答案:

答案 0 :(得分:0)

如果您的代码在Thread.sleep()上正常运行,则

您的隐式等待不会有所帮助。

Thread.sleep(time)明确等待的极端情况。

显式等待是您定义的代码,用于在继续执行代码之前等待特定条件发生。

在Java硒绑定中,我们可以这样定义和使用Explicit等待:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));  

此方法最多等待10秒,然后引发TimeoutException,否则如果发现该元素将在0-10秒内返回它。默认情况下,WebDriverWait每500毫秒调用ExpectedCondition,直到成功返回。

请注意:请勿混合使用隐式和显式等待。这样做可能导致无法预测的等待时间。

问题:主要在找不到元素上并且发生陈旧元素异常?

只需验证您的定位器。定位器应为静态而非动态。仅举例来说,您永远不要使用由JS或任何其他编程语言生成的任何Web元素的动态ID。

使用量角器,您不仅可以同步脚本。您现在所要做的就是更改定位器和等待时间。

希望这会对您有所帮助。

答案 1 :(得分:0)

不可能在Selenium中使用量角器,但是您可以将所有测试重写到量角器中,并且您将全部继承自Selenium。量角器是Webdriverjs的包装器,因此您可以在量角器+量角器自身的定位器和异步等待功能中获得webdriverjs的所有功能。