-3

将 Firefox 更新到 52 版后,我不得不将 gecko 驱动程序更新到 v17。但是我之前的所有脚本在 Firefox 中都失败了,因为它太快了,并且不想加载页面上的元素。

我现在被迫添加 Thread.sleep 等待每次点击。你们有什么解决方案可以帮助我吗?

在 Chrome 中工作得更好,但需要两者工作相同。

我运行 testNg,我得到的异常是:构建信息:版本:'3.4.0',修订:'未知',时间:'未知'

我通过插入不推荐的 Thread.sleep 来修复它,但这是唯一有效的方法。流利的等待不起作用或我

1505314327534 geckodriver INFO 监听 127.0.0.1:42753 1505314328131 mozprofile::profile INFO 使用配置文件路径 C:\User\AppData\Local\Temp\rust_mozprofile.NX5A3KOOQr 1505314328136 geckodriver::marionette INFO 启动浏览器 C:/Program Files/Mozilla Firefox firefox.exe with args [] 1505314328150 geckodriver::marionette INFO Connecting to Marionette on localhost:65331 1505314331570 Marionette INFO 监听端口 65331

4

2 回答 2

1

测试自动化的目标之一是减少Test Execution时间。因此,如果使用的 Firefox ie 的驱动程序运行得更快,我们应该会感到geckodriver高兴Marionette。现在你的问题一定是如何geckodriver与实时同步Mozilla Firefox Browser

  1. 在你提到的关于添加的问题中Thread.sleep(n)。减慢诱导Thread.sleep(n)不是最佳编程实践的一部分。它会降低性能。因此,让我们看看其他可用的选项。
  2. 接下来你提到了关于not waiting for element on the page to load. 这是我们在使用WebDriver. 解决这个问题的最简单方法是诱导ImplicitWait. 简而言之,通过引入ImplicitWait驱动程序将轮询HTML DOM配置的时间量来查找元素或元素。到那时,您一直在寻找的一个或多个元素可能在HTML DOM. 的一个例子ImplicitWait如下:

    • 蟒蛇

      driver.implicitly_wait(10)
      
    • 爪哇

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      

您可以在此处找到官方文档,也可以在此处找到详细说明stackoverflow discussion

  1. ImplicitWait可以大大减慢您的测试执行速度。所以在那种情况ExplicitWait下来拯救我们。简而言之,ExplicitWait是您为 WebDriver 实例定义、配置和实现的代码块,以等待满足特定条件,然后再继续执行下一行代码。的一个例子ExplicitWait如下:

    • 蟒蛇

      password = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "your_xpath")))
      password.send_keys("your_password")
      
    • 爪哇

      WebDriverWait wait = new WebDriverWait(driver, 20);
      WebElement password = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("your_xpath")));
      password.sendKeys("your_password");
      

您可以在此处找到官方文档,也可以在此处找到详细说明stackoverflow discussion

于 2017-09-14T09:50:18.040 回答
0

在 Chrome 中工作得更好,但需要两者工作相同。

我运行 testNg,我得到的异常是:构建信息:版本:'3.4.0',修订:'未知',时间:'未知'

我通过插入不推荐的 Thread.sleep 来修复它,但这是唯一有效的方法。流利的等待不起作用或我

于 2017-09-28T00:05:22.060 回答