我们正在使用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
我在使用geckodriver 0.19.0的新版本时遇到了相同的问题webdriver.Firefox(),driver.implicitly_wait(IMPLICIT_WAIT)并通过安装新版本的geckodriver解决了它(我之前是2017年6月的版本)。
webdriver.Firefox()
driver.implicitly_wait(IMPLICIT_WAIT)
从此处下载geckodriver:https : //github.com/mozilla/geckodriver/releases。
我的配置:
检查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的文档