一尘不染

Python Selenium driver.implicitly_wait(30)

jenkins

我们正在使用VM进行开发,并使用Jenkins作为套件。今天早上,我们遇到了从未发生过的硒测试问题。在粘贴代码之前,重要的是要知道硒测试在我的机器上可以运行,但在Jenkins上无法运行。(而且已经运行了一个月)

class Remote(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://developer.intuit.com/"
        self.verificationErrors = []
        self.accept_next_alert = True

这是导致此错误的代码:

ERROR: test_sl_front (__main__.SlFront)

Traceback (most recent call last):
  File "./scripts/test-sl/sl-front.py", line 160, in setUp
    self.driver.implicitly_wait(30)
  File "/var/lib/jenkins/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 778, in implicitly_wait
    'implicit': int(float(time_to_wait) * 1000)})
  File "/var/lib/jenkins/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "/var/lib/jenkins/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: timeouts

这很奇怪,因为昨天和前一天一切正常。我试图删除“ .Firefox()”,以为它可能与问题有关,但是没有任何变化。

此问题是由使用了几个月的“
self.driver.implicitly_wait(30)”引起的。在Jenkin的构建过程中,我们使用以下命令行启动此测试。

export DISPLAY=:99
python ./scripts/test-sl/sl-front.py

阅读 654

收藏
2020-07-25

共1个答案

一尘不染

我在使用geckodriver
0.19.0的新版本时遇到了相同的问题webdriver.Firefox()driver.implicitly_wait(IMPLICIT_WAIT)并通过安装新版本的geckodriver解决了它(我之前是2017年6月的版本)。

从此处下载geckodriver:https :
//github.com/mozilla/geckodriver/releases。

我的配置:

  • Firefox 56.0
  • 硒版本:3.4.3

检查shell中的geckodriver版本:

$ geckodriver -V
geckodriver 0.19.0

默认情况下,硒将使用您路径中的Firefox版本。要更改为另一个版本,请使用:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary(firefox_path='your firefox path', log_file='your logfile path')
driver = webdriver.Firefox(firefox_binary=binary)

硒WebDriver的文档

2020-07-25