无法使用 Selenium 启动 Firefox 浏览器。
下面是我执行的代码:
public class BrowserTest {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver",
"D:\\Selenium\\BrowserJars\\geckodriver113.exe");
WebDriver driver = new FirefoxDriver();
}
}
我收到的错误:
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line
Host info: host: 'XXXXXXXXX', ip: 'XXX.XXX.XXX.XXX'
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_172'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {}}]}]
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:136)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:94)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:165)
at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:183)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:229)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:157)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:150)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:146)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:127)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:112)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:102)
at BrowserTest.main(BrowserTest.java:12)
更多详情:
只需删除下面的行,如果您使用 Selenium
driver.exe
或更高版本,则无需设置属性并提供 v4.6.0
的位置。
System.setProperty("webdriver.gecko.driver",
"D:\\Selenium\\BrowserJars\\geckodriver113.exe");
参考文献:Selenium Manager 简介
很好的问题和很棒的回应,肖恩!感谢那。我想分享一些我自己对 Selenium 自动驱动程序管理的修改,以便可能增加讨论的深度。确保“geckodriver”可执行文件可在系统路径中访问是至关重要的,所以这就是我的情况:
开发环境:我在 Windows 11 上使用 Java 和 IntelliJ IDEA 开始测试,然后迁移到 Ubuntu 22.04。 测试过程:最初,我使用 System.setProperty() 手动设置 geckodriver 的路径。一切都在 Windows 上完美运行。 切换到 Linux:就在那时我遇到了障碍。在 Windows 上顺利运行的相同测试在 Linux 上却失败了。 我仔细检查了所有依赖项;那里没有问题。 对于 Selenium 网格,我使用了 selenium-server-standalone-3.141.59.jar。为了让服务器启动并运行,我运行了:java -jar selenium-server-standalone-3.141.59.jar。 当我从代码中删除 System.setProperty() 行并确保 Selenium 服务器正常运行后,测试再次顺利运行。 整个事件确实强调了根据操作系统定制设置的重要性。这一切都是为了确保 Selenium 的设置完全符合您系统的特性。如果有人想更深入地了解这一点或有任何疑问,请随时提问。我来这里是为了帮助和分享!