Selenium 2.0rc3点击功能太快了?

时间:2011-07-06 19:58:00

标签: python selenium webdriver

首先,抱歉这个神秘的问题。

我的团队目前正在使用Selenium 2.0rc3(使用python)来测试我们的Chrome应用程序。当我们使用2.02b版本的Selenium时,我们的测试通过了(它有点慢,我们加入了webdriver的小黑客)。升级后,测试变得非常快,并开始失败。调试后我们发现大多数测试失败,因为webdrivers click()函数没有阻塞()连续调用。目前我们在每次点击后添加了0.5秒的sleep()/超时,虽然这解决了当前的问题,但它并没有完全实现我们的主要目标(这是为了加快我们的测试)

3 个答案:

答案 0 :(得分:5)

你的问题并不是因为点击太快了。只是它在该元素出现之前点击。有两种方法可以解决这个问题:

  1. 等到元素出现后再单击
  2. 增加隐含等待时间
  3. 我担心我没有使用过WebDriver Python绑定。但是,我可以告诉你它是如何用Java完成的,希望你能自己找到Python等价物。

    要等待一个元素,我们在Java中有一个名为WebDriverWait的类。您将编写一个Function,并将其传递给until()方法,该方法仅在元素存在时才会传递。您可以使用driver.findElements( By... )或在异常处理程序中包装driver.findElement( By... )的方法之一。轮询Function直到它返回true或指定的超时被命中。

    第二种方法是您的案例的首选方法,在Java中,您可以driver.manage().timeouts().implicitlyWait( ... )

答案 1 :(得分:1)

我已经尝试了用于铬的selenium-2 rc3 python绑定。我的经历与您所描述的相反 - 点击后,驱动程序不知道页面已准备好继续。因此,他们没有加快测试速度,反而非常缓慢(因为司机等待了很长时间)。然而,firefox驱动程序似乎相当稳定 - 也许你应该坚持使用它,直到chrome驱动程序被烘烤了一点。

答案 2 :(得分:0)

如果click()执行ajax调用,我建议你使用NicelyResynchronizingAjaxController