使用Firefox的硒自动化在本地可以运行,但是在服务器上无法运行
硒版本:3.141.59
Geckodriver版本:0.24.0
Firefox版本:68.0.1
JDK版本:1.8.0_171
本地JRE版本:1.8.0_211
服务器JRE版本:1.8.0_191
例外:
org.openqa.selenium.WebDriverException: connection refused
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'XXXXXXXXXXXXXXX', ip: 'XXX.XXX.XXX.XX', os.name: 'Windows Server 2016', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
Driver info: driver.version: FirefoxDriver
remote stacktrace:
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
我正在以无头模式启动Firefox。在本地工作正常,但在Windows服务器上出现上述错误。
代码:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("capability.policy.default.Window.QueryInterface", "allAccess");
profile.setPreference("capability.policy.default.Window.frameElement.get","allAccess");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", System.getProperty("user.dir")+"\\downloads");
profile.setPreference("browser.download.useDownloadDir", true);
profile.setAcceptUntrustedCertificates(true);
profile.setAssumeUntrustedCertificateIssuer(true);
DesiredCapabilities capabilities = new DesiredCapabilities();
FirefoxOptions options = new FirefoxOptions();
options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
options.setCapability("marionatte", false);
options.setProfile(profile);
options.setHeadless(true);
options.setBinary(browserBinary);
options.addPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv");
options.addPreference("pdfjs.disabled", true);
log.info("Starting firefox");
FirefoxDriver driver = new FirefoxDriver(options);
driver.getCapabilities().merge(capabilities);
我之前尝试过chromedriver,它在本地和服务器上都能很好地工作。但是我想使用Firefox以无头模式下载文件。
浏览器跟踪日志-
1563908741085 mozrunner::runner INFO Running command: "firefox/app/firefox.exe" "-marionette" "-headless" "-foreground" "-no-remote" "-profile" "C:\\Users\\<userid>\\AppData\\Local\\Temp\\rust_mozprofile.cJQJoMJMqDtb"
1563908741101 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1:62884
*** You are running in headless mode.
1563908741992 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1563908741993 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: telemetry
1563908741993 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/
1563908741993 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader*
1563908742164 Marionette TRACE Received observer notification profile-after-change
1563908742224 Marionette TRACE Received observer notification toplevel-window-ready
1563908742271 Marionette TRACE Received observer notification command-line-startup
1563908742272 Marionette TRACE Received observer notification nsPref:changed
1563908742272 Marionette DEBUG Init aborted (running=false, enabled=true, finalUIStartup=false)
1563908742456 Marionette TRACE Received observer notification toplevel-window-ready
1563908744415 Marionette TRACE Received observer notification marionette-startup-requested
1563908744416 Marionette TRACE GFX sanity window detected, waiting until it has been closed...
1563908802148 mozrunner::runner DEBUG Killing process 2704
1563908802148 webdriver::server DEBUG <- 500 Internal Server Error {"value":{"error":"unknown error","message":"connection refused","stacktrace":""}}
答案 0 :(得分:0)
您需要在-FirefoxOptions options = new FirefoxOptions();之后启动RemoteDriver。
driver = new RemoteWebDriver(your URL, capabilities);