【问题标题】:Python django: How to call selenium.set_speed() with django LiveServerTestCasePython django:如何使用 django LiveServerTestCase 调用 selenium.set_speed()
【发布时间】:2013-03-21 03:17:01
【问题描述】:

要运行我的功能测试,我使用LiveServerTestCase

我想调用不在 webdriver 中但在 selenium 对象中的 set_speed(以及其他方法,set_speed 只是一个示例)。

http://selenium.googlecode.com/git/docs/api/py/selenium/selenium.selenium.html#module-selenium.selenium

我的LiveServerTestCase子类

from selenium import webdriver

class SeleniumLiveServerTestCase(LiveServerTestCase):

    @classmethod
    def setUpClass(cls):

        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(7)

        cls.driver.maximize_window()

        # how to call selenium.selenium.set_speed() from here? how to get the ref to the selenium object?

        super(SeleniumLiveServerTestCase, cls).setUpClass()

如何获得?我想我不能在 selenium 上调用构造函数。

【问题讨论】:

  • 检查 this 链接。您可能需要使用 Webdriver 支持的 selenium 来使用 setspeed 方法。

标签: python django binding selenium webdriver


【解决方案1】:

你没有。无法在 WebDriver 中设置速度,原因是您通常不需要,“等待”现在在不同的级别完成。

在可以告诉 Selenium 之前,不要以正常速度运行它,以较慢的速度运行它,以便在页面加载时提供更多可用的东西,用于加载缓慢的页面或 AJAX 化页面。

现在,您完全取消了它。示例:

我有一个登录页面,我登录并在登录后看到一条“欢迎”消息。问题是欢迎消息没有立即显示并且有时间延迟(使用 jQuery)。

Pre WebDriver Code 将指示 Selenium,运行此测试,但在此处放慢速度,以便我们可以等到欢迎消息出现。

较新的 WebDriver 代码将指示 Selenium,运行此测试,但是当我们登录时,使用 explicit waits. 等待最多 20 秒以显示欢迎消息

现在,如果您真的想访问“设置”Selenium 的速度,首先我建议您不要这样做,但解决方案是深入研究旧的、现已弃用的代码。

如果您已经大量使用 WebDriver,则可以使用 WebDriverBackedSelenium,它可以让您访问较旧的 Selenium 方法,同时保持 WebDriver 支持相同,因此您的大部分代码将保持不变。

https://groups.google.com/forum/#!topic/selenium-users/6E53jIIT0TE

第二种选择是深入到旧的 Selenium 代码中并使用它,这将改变你现有的很多代码(因为它是在“WebDriver”概念诞生之前)。

Selenium RC 和 WebDriverBackedSelenium 的代码都放在这里,供好奇者参考:

https://code.google.com/p/selenium/source/browse/py/selenium/selenium.py

类似的东西:

from selenium import webdriver
from selenium import selenium
driver = webdriver.Firefox()
sel = selenium('localhost', 4444, '*webdriver', 'http://www.google.com')
sel.start(driver = driver)

然后您就可以执行此操作了:

sel.setSpeed(5000)

【讨论】:

  • 我会尽快尝试后端硒选项。恕我直言,令人难以置信的是,在较新的 webdriver 代码中不能减慢整个 selenium 流程
  • 这一点都不令人难以置信,您不需要降低测试/自动化任务的速度。如果由于测试速度太快而无法正常工作,那仅意味着测试编写得不好,应该使用显式等待。可以在 webdriver 对象上设置隐式等待,但绝不应该使用它,因为它可能会产生意想不到的副作用,尤其是与显式等待结合使用时。
  • 我想降低速度的唯一原因是在测试失败时检查进程。如果我放慢测试速度,我可能会看到会发生什么
猜你喜欢
  • 2015-12-26
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2015-10-15
  • 2019-12-02
  • 2016-01-16
  • 2013-01-19
相关资源
最近更新 更多