504 Gateway Time-out error using Firefox 68.9.0esr in headless mode with GeckoDriver Selenium and Python

元气小坏坏 提交于 2021-02-16 20:35:08

问题


I made a container image with selenium. I used a ubi image from RedHat as base image.

I installed the following versions of the geckodriver and Mozilla Firefox

  • geckodriver 0.26.0 (e9783a644016 2019-10-10 13:38 +0000)
  • Mozilla Firefox 68.9.0esr

I can run a selenium test on firefox successfully. When I run a headless test, something goes wrong:

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>

Logs from OpenShift where the container runs:

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

I tried the official selenium image, which uses Mozilla version 75 and the same Geckodriver. They make use of ubuntu bionic.

Is Mozilla Firefox 68.9.0esr not supported with these gecko drivers? Or could it be because of another reason that headless mode doesn't work?


回答1:


This error message...

selenium.common.exceptions.WebDriverException: Message: <html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.

...implies that the Firefox v68.9.0esr was unable to establish a connection with the application server and the following WebDriverException error was raised.


504 Gateway Timeout errors are inconclusive as they indicate what happened to your website, but they doesn't convey what exactly went wrong, making it difficult to analyze the root cause and solve the issue. However, there can be many reasons behind the error 504 Gateway Time-out and a couple of approaches to solve the issue are as follows:

  • Look for server connectivity issues: Check if the server is down for maintenance or any other reason, your website could serve visitors a 504 Gateway Timeout Error page. The only way to troubleshoot this issue is to wait for your server to finish maintenance or fix the problem causing the error.
  • Check for any DNS changes: If the application have recently changed host servers or moved the website to a different IP address website’s DNS server is changed, it could cause your website to serve its visitors a 504 Gateway Timeout Error page. Then the website won't be up and running until the DNS changes take full effect, which can take a couple of hours.
  • Browse through the logs: Logs will provide details about the server’s behavior and status. Analyze them to uncover any useful information.
  • Fix faulty firewall configurations: Firewall is a website's gatekeeper, protecting your site from malicious visitors or distributed denial-of-service (DDoS) attacks. A faulty firewall configuration will cause your firewall to deem requests from a content delivery network as an attack on your server and reject them, resulting in a 504 Gateway Timeout error. Check your firewall configuration to pinpoint and fix the issue.

This usecase

However as of this usecase, this error message...

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!

...indicates that there was an issue with the Firefox v68.9.0esr build.


Solution

As per the comment within the discussion (firefox:28877): GConf-WARNING **: Client failed to connect to the D-BUS daemon: Address does not contain a colon the solution is to revert back to the previous version of Firefox ESR build.



来源:https://stackoverflow.com/questions/62712583/504-gateway-time-out-error-using-firefox-68-9-0esr-in-headless-mode-with-geckodr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!