JAVA:使用 GeckoDriver 在 Linux 上运行 Selenium 测试:驱动程序不可执行

Posted

技术标签:

【中文标题】JAVA:使用 GeckoDriver 在 Linux 上运行 Selenium 测试:驱动程序不可执行【英文标题】:JAVA: Running Selenium Tests on Linux using GeckoDriver: driver is not executable 【发布时间】:2018-03-18 05:14:11 【问题描述】:

我目前正在 Linux 机器上使用 Selenium WebDriver 进行测试自动化项目。 (Ubuntu 16.04.3) 可以在 Windows 机器上执行测试而不会出现任何错误,因为我尝试在 Linux VM 上运行测试,但在初始化 GeckoDriver 时遇到了严重问题。

这是我的代码的一部分:

System.setProperty("webdriver.gecko.driver", _GECKO_DRIVER);
WebDriver driver = new FirefoxDriver();

变量 _GECKO_DRIVER 是 linux 可执行文件的文件路径,我从这个镜像下载:https://github.com/mozilla/geckodriver/releases(在 tar.gz 文件夹内)

很遗憾JAVA无法初始化驱动,所以无法运行测试,导致如下错误:

Exception in thread "main" java.lang.IllegalStateException: 
The driver is not executable: path/to/repo/./src/main/resources/Driver/GeckoDriver/geckodriver
at com.google.common.base.Preconditions.checkState(Preconditions.java:534)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:140)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:131)
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:115)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:103)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:99)

如何解决此问题并正确初始化驱动程序?

【问题讨论】:

【参考方案1】:

从你的例外:

driver is not executable: 

使其可执行

chmod +x geckodriver

然后重试。

【讨论】:

问题:我们需要哪个路径来运行这个cmd? 执行“chmod: cannot access 'geckodriver': No such file or directory”后出现错误 @RajKumarSamala 当然是在你拥有 geckodriver 的路径中。 我在路径 geckodriver 上运行命令,但我仍然收到以下错误 java.lang.IllegalStateException: The driver is not executable: /var/lib/jenkins/workspace/BackLogin/drivers/linux-driver /geckodriver 代码:System.setProperty("webdriver.gecko.driver", "drivers/linux-driver/geckodriver"); (chmod +x geckodriver) 对我不起作用并且发生了这个错误:chmod: cannot access 'geckodriver': No such file or directory【参考方案2】:

我在使用 Java+Eclipse 执行测试时遇到了同样的问题。我在项目工作区下添加了 geckodriver,为简单起见,只需右键单击 eclipse 中的 geckodriver 并选中 Execute 列下的所有复选框(在属性窗口中)。这将使 geckodriver 可执行(换句话说,您允许对其进行可执行访问)

【讨论】:

以上是关于JAVA:使用 GeckoDriver 在 Linux 上运行 Selenium 测试:驱动程序不可执行的主要内容,如果未能解决你的问题,请参考以下文章

SessionNotCreatedException:无法通过Java使用SeleniumGrid和GeckoDriver Firefox找到一组匹配的功能

Java Selenium 3.3.1 和 geckodriver 0.15.0 不在 Windows 10 上等待

如何从 Java 中的 BotD 中隐藏 Geckodriver 中的 WebDriver?

如何从 Java 中的 BotD 中隐藏 Geckodriver 中的 WebDriver?

Selenium 3.12 在 driver.quit() @ FireFox 60 / Win 7 Home Premium / Java 10.0.1 / GeckoDriver 0.20.1 上

geckodriver 中的“无法访问死对象”