【问题标题】:Controlling Selenium using Python - unable to use 'waits'使用 Python 控制 Selenium - 无法使用“等待”
【发布时间】:2011-09-06 16:59:15
【问题描述】:

我们维护一个库,供进行系统级测试的测试脚本使用。被测系统的一部分是网站,为了导航和与网站交互,我们使用 JPype 来控制 Selenium 2.0 的 webdriver。 Selenium 2.0 有 Java 和 C# 的接口,暂时我们不能用 Java 或 C# 重写测试库,这就是我们使用 JPype 来控制它的原因。这个系统是由最近离开公司的人建立的,我现在正在加快速度。

每当我们与网站交互时,我们都会使用 time.sleeps:

self.browserDict['Driver'].findElement(self.browserDict['By'].id(byId)).click()
time.sleep(_AJAX_TIMEOUT)

>>> self.browserDict['Driver']
<jpype._jclass.org.openqa.selenium.firefox.FirefoxDriver object at 0x0626DD30>
>>> byId
'login_submit'

只要我们没有点击任何东西,就会有一个 time.sleep() 等待下一页加载。我们有很多 AJAX,但似乎应该有一种方法可以等待 AJAX 完成加载。在他离开之前,该工具的作者解释说 JPype 或 Selenium 存在阻止此操作的问题。到目前为止我找不到这个问题,但我也不知道这里将使用的等待命令。

编辑:
一种选择是使用implicitlyWait,假设如果超时为 6 秒,它会在找到一个元素后立即返回,但是在加载页面时它似乎总是等待整整 6 秒。

编辑2: Python bindings 直接到 selenium 2.0 现已推出,但似乎也没有办法等待 Ajax 加载完成该库:time.sleep(0.2) # Let the page load, will be added to the AP(来自他们的示例)。

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    也许http://wiki.openqa.org/display/SEL/waitForCondition 可以满足您的条件?

    【讨论】:

      【解决方案2】:

      ImplicitlyWait 通过 JPype 和 Java 绑定工作,可以满足这里的需要。

      【讨论】:

      • 你应该通过 WebdriverWait 使用显式等待
      猜你喜欢
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 2018-01-04
      • 2019-10-16
      • 2016-10-10
      • 2023-03-10
      相关资源
      最近更新 更多