我目前正在尝试使用selenium在linux上自动执行一些浏览任务(我运行的是linuxmint20)。然而,我遇到了一堵墙:我无法让它定位任何浏览器二进制文件。我试过使用firefox和chromium(我想如果我能加载chromium二进制文件,我就可以接受),但是它们都产生相同的结果,selenium说它找不到浏览器二进制文件。
这是我的密码:
package test1;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class app
{
public static void main(String[] args)
{
System.setProperty("webdriver.firefox.driver", "/home/ann/bin/geckodriver");
WebDriver driver = new FirefoxDriver();
}
}
以下是运行代码时的结果:
Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: LINUX
Build info: version: '4.0.0-alpha-7', revision: 'de8579b6d5'
System info: host: 'ann-System-Product-Name', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-58-generic', java.version: '11.0.8'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:95)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.openqa.selenium.firefox.FirefoxOptions.getBinary(FirefoxOptions.java:199)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.withOptions(GeckoDriverService.java:180)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:177)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:155)
at test1.app.main(app.java:10)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
firefox已安装,可以从终端执行:
ann@ann-System-Product-Name:~$ whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox
壁虎河在我的房间里 $PATH
执行它会得到以下结果:
ann@ann-System-Product-Name:~$ geckodriver
1609693404322 geckodriver INFO Listening on 127.0.0.1:4444
2条答案
按热度按时间ibrsph3r1#
system.setproperty(“webdriver.firefox.driver”,“/home/ann/bin/geckodriver”);设置gekodriver路径而不是firefox.exe路径。你可以使用上面的代码
也不是webdriver.firefox.driver而是webdriver.gecko.driver
laik7k3q2#
geckodriver/火狐
在linux平台上,firefox二进制文件的默认位置为:
如果firefox安装在默认位置,您只需:
但是,某些linux发行版的默认位置可能会有所不同。在这些情况下,如果firefox安装在自定义位置,您必须:
您可以在webdriverexception中找到相关的详细讨论:无法使用geckodriver firefox和selenium java连接到二进制firefoxbinary(c:\program files\mozilla firefox\firefox.exe)
铬驱动/铬
同样,在linux平台上,chrome二进制文件的默认位置是:
如果在默认位置安装了google chrome,您只需:
但是,某些linux发行版的默认位置可能会有所不同。在这些情况下,如果chrome安装在自定义位置,您必须:
您可以在chromedriver的默认位置和在windows上安装chrome的位置中找到相关的详细讨论
注意:如果您使用的是geckodriver/firefox组合,而不是
webdriver.firefox.driver
你必须使用webdriver.gecko.driver