我用 Selenium 制作了一个容器图像。我用了ubi image
来自 RedHat 作为基础镜像。
我安装了以下版本的 geckodriver 和 Mozilla Firefox
我可以在 Firefox 上成功运行 Selenium 测试。当我运行 headless 测试时,出现了问题:
Traceback (most recent call last):
File "./selenium-test.py", line 58, in <module>
check_browser("FIREFOX")
File "./selenium-test.py", line 26, in check_browser
driver.get("http://selenium-hub-cpet-selenium.apps.idc.ont.belastingdienst.nl/grid/console")
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 208, in check_response
raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: <html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body></html>
来自容器运行的 OpenShift 的日志:09:54:45.599 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService)
Failed to open connection to "session" message bus: Address does not contain a colon
1593770085639 mozrunner::runner INFO Running command: "/usr/bin/firefox" "-marionette" "-headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofileaaKtFi"
1593770085639 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1:34835
Failed to open connection to "session" message bus: Address does not contain a colon
Running without a11y support!
*** You are running in headless mode.
1593770086616 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1593770086616 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: telemetry
1593770086616 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/
1593770086616 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader*
1593770086749 Marionette TRACE Received observer notification profile-after-change
1593770086826 Marionette TRACE Received observer notification command-line-startup
1593770086826 Marionette TRACE Received observer notification nsPref:changed
1593770086826 Marionette DEBUG Init aborted (running=false, enabled=true, finalUIStartup=false)
1593770086938 Marionette TRACE Received observer notification toplevel-window-ready
JavaScript error: undefined, line 14: Error: An unexpected error occurred
JavaScript error: moz-extension://b2c6e410-fc73-460e-9587-3e165c5ce4ac/lib/picture_in_picture_overrides.js, line 15: Error: Incorrect argument types for pictureInPictureParent.setOverrides.
JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 1325: uncaught exception: 2147746065
1593770096320 Marionette TRACE Received observer notification marionette-startup-requested
1593770096320 Marionette TRACE Waiting until startup recorder finished recording startup scripts...
1593770096523 Marionette TRACE All scripts recorded.
1593770096524 Marionette DEBUG Setting recommended pref apz.content_response_timeout to 60000
1593770096524 Marionette DEBUG Setting recommended pref browser.contentblocking.introCount to 99
1593770096525 Marionette DEBUG Setting recommended pref browser.download.panel.shown to true
1593770096609 Marionette DEBUG Setting recommended pref browser.newtabpage.enabled to false
1593770096610 Marionette DEBUG Setting recommended pref browser.pagethumbnails.capturing_disabled to true
1593770096611 Marionette DEBUG Setting recommended pref browser.search.update to false
1593770096611 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false
1593770096611 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false
1593770096612 Marionette DEBUG Setting recommended pref browser.tabs.unloadOnLowMemory to false
1593770096612 Marionette DEBUG Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false
1593770096612 Marionette DEBUG Setting recommended pref browser.tabs.warnOnOpen to false
1593770096612 Marionette DEBUG Setting recommended pref browser.usedOnWindows10.introURL to
1593770096612 Marionette DEBUG Setting recommended pref browser.urlbar.suggest.searches to false
1593770096613 Marionette DEBUG Setting recommended pref datareporting.policy.dataSubmissionPolicyAccepted to false
1593770096613 Marionette DEBUG Setting recommended pref dom.disable_beforeunload to true
1593770096613 Marionette DEBUG Setting recommended pref dom.disable_open_during_load to false
1593770096613 Marionette DEBUG Setting recommended pref dom.file.createInChild to true
1593770096613 Marionette DEBUG Setting recommended pref dom.max_chrome_script_run_time to 0
1593770096613 Marionette DEBUG Setting recommended pref dom.max_script_run_time to 0
1593770096614 Marionette DEBUG Setting recommended pref extensions.getAddons.cache.enabled to false
1593770096614 Marionette DEBUG Setting recommended pref extensions.webservice.discoverURL to http://%(server)s/dummy/discoveryURL
1593770096614 Marionette DEBUG Setting recommended pref network.http.prompt-temp-redirect to false
1593770096614 Marionette DEBUG Setting recommended pref network.http.speculative-parallel-limit to 0
1593770096614 Marionette DEBUG Setting recommended pref security.fileuri.strict_origin_policy to false
1593770096614 Marionette DEBUG Setting recommended pref security.notification_enable_delay to 0
1593770096614 Marionette DEBUG Setting recommended pref signon.autofillForms to false
1593770096615 Marionette DEBUG Setting recommended pref signon.rememberSignons to false
1593770096615 Marionette DEBUG Setting recommended pref toolkit.cosmeticAnimations.enabled to false
1593770096821 Marionette INFO Listening on port 34835
1593770096821 Marionette DEBUG Remote service is active
1593770096914 Marionette DEBUG Accepted connection 0 from 127.0.0.1:47282
1593770096915 geckodriver::marionette DEBUG Connection to Marionette established on 127.0.0.1:34835.
1593770096921 Marionette DEBUG 0 -> [0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"browserName":"firefox"}]
1593770096922 Marionette WARN TLS certificate errors will be ignored for this session
1593770097114 Marionette TRACE [4294967297] Frame script loaded
1593770097117 Marionette TRACE [4294967297] Frame script registered
1593770097210 Marionette DEBUG 0 <- [1,1,null,{"sessionId":"f0d2e302-c592-49a6-bca6-4f597f778385","capabilities":{"browserName":"firefox","browserVersion":"68.9. ... /rust_mozprofileaaKtFi","moz:shutdownTimeout":60000,"moz:useNonSpecCompliantPointerOrigin":false,"moz:webdriverClick":true}}]
1593770097214 webdriver::server DEBUG <- 200 OK {"value":{"sessionId":"f0d2e302-c592-49a6-bca6-4f597f778385","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"68.9.0","moz:accessibilityChecks":false,"moz:buildID":"20200529103754","moz:geckodriverVersion":"0.26.0","moz:headless":true,"moz:processID":363,"moz:profile":"/tmp/rust_mozprofileaaKtFi","moz:shutdownTimeout":60000,"moz:useNonSpecCompliantPointerOrigin":false,"moz:webdriverClick":true,"pageLoadStrategy":"normal","platformName":"linux","platformVersion":"4.18.0-147.8.1.el8_1.x86_64","rotatable":false,"setWindowRect":true,"strictFileInteractability":false,"timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"unhandledPromptBehavior":"dismiss and notify"}}}
09:54:57.215 INFO [ProtocolHandshake.createSession] - Detected dialect: W3C
09:54:57.216 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session f0d2e302-c592-49a6-bca6-4f597f778385 (org.openqa.selenium.firefox.GeckoDriverService)
1593770102314 webdriver::server DEBUG -> POST /session/f0d2e302-c592-49a6-bca6-4f597f778385/url {"url": "http://selenium-hub-cpet-selenium.apps.idc.ont.belastingdienst.nl/grid/console"}
1593770102317 Marionette DEBUG 0 -> [0,2,"WebDriver:Navigate",{"url":"http://selenium-hub-cpet-selenium.apps.idc.ont.belastingdienst.nl/grid/console"}]
1593770103015 Marionette TRACE [4294967297] Received DOM event beforeunload for about:blank
我尝试了官方 selenium 镜像,它使用 Mozilla 版本 75 和相同的 Geckodriver。他们使用 ubuntu 仿生。这些壁虎驱动程序不支持 Mozilla Firefox 68.9.0esr 吗?或者可能是因为 headless 模式不起作用的另一个原因?
最佳答案
此错误消息...
selenium.common.exceptions.WebDriverException: Message: <html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.
...意味着 Firefox v68.9.0esr 无法与应用程序服务器建立连接,并引发了以下 WebDriverException 错误。504 Gateway Timeout 错误是不确定的,因为它们表明您的网站发生了什么,但它们并没有传达到底出了什么问题,因此很难分析根本原因并解决问题。但是,错误 504 Gateway Time-out 背后的原因可能有很多。解决该问题的几种方法如下:
这个用例
但是,在此用例中,此错误消息...
1593770085639 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1:34835
Failed to open connection to "session" message bus: Address does not contain a colon
Running without a11y support!
...表示 Firefox v68.9.0esr 版本存在问题。解决方案
根据 comment在讨论中(firefox:28877): GConf-WARNING **: Client failed to connect to the D-BUS daemon: Address does not contain a colon解决方案是恢复到以前版本的 Firefox ESR 构建。
关于python - 在 GeckoDriver Selenium 和 Python 的 headless 模式下使用 Firefox 68.9.0esr 时出现 504 网关超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64070220/