无法找到/打开Firefox二进制文件 - webdriver / robot framework
我的测试在java和fitnesse中运行良好。通过使用Internet Explorer和Chrome的机器人框架执行它们时,它们也运行良好。但是当我通过Firefox执行它们时,使用'new FirefoxDriver()',我收到以下错误:
DEBUG java.lang.ExceptionInInitializerError
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java: 81)
Caused by: java.lang.NullPointerException
org.openqa.selenium.firefox.FirefoxBinary.<clinit>(FirefoxBinary.java: 42)
... 183 more
在FirefoxBinary和FirefoxDriver类中,这些行对应于以下代码:
FirefoxBinary ln42-43
private static final String PATH_PREFIX = "/" +
FirefoxBinary.class.getPackage().getName().replace(".", "/") + "/";
and FirefoxDriver ln 80-82
public FirefoxDriver(FirefoxProfile profile) {
this(new FirefoxBinary(), profile);
}
我尝试在类路径中设置Firefox二进制文件的路径,pythonpath(由robotframework使用)和路径。我还编写了以下代码行来尝试强制找到二进制文件:
System.setProperty("webdriver.firefox.bin", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(FirefoxDriver.BINARY, "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
我试图在两台计算机,我的工作和家用机器上执行测试。此外,我尝试使用firefox.exe -p创建的firefox配置文件,并在java代码中创建一个。我试过Firefox 6-8。不幸的是,这些都没有奏效。
我也在使用/使用过: Java 1.6 硒2.9.0 / 2.13.0 Windows 7
我不确定这是否相关,但作为一种解决方法,我一直试图让Firefox通过远程浏览器运行。我一直在尝试以下代码:
rcc = new RemoteControlConfiguration();
rcc.setPort(4447);
rcc.setPortDriversShouldContact(4447);
rcc.setInteractive(true);
rcc.setSingleWindow(true);
rcc.setTimeoutInSeconds(30);
ss = new SeleniumServer(rcc);
ss.start();
DesiredCapabilities cap = new DesiredCapabilities();
cap.setJavascriptEnabled(true);
cap.setBrowserName("firefox");
URL url = new URL ("http://www.google.com/");
driver = new RemoteWebDriver(url,cap);
但是当我运行上面的内容时,我收到以下错误消息:
Exception in thread "main" org.openqa.selenium.WebDriverException: Error communicating with the remote browser. It may have died.
Build info: version: '2.13.0', revision: '14794', time: '2011-11-18 17:49:47'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0'
Driver info: driver.version: Selenium2Driver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:412)
有没有人知道如何解决我的任何一个问题?
任何帮助都会非常感激,我觉得这个问题非常困难。当Internet Explorer已经做了两天试图让Firefox运行起来......感觉世界即将结束。
谢谢, 詹姆斯
编辑:1
我可以使用selenium-server运行Firefox。
答案 0 :(得分:0)
James,FYI,RemoteWebDriver的URL在上面的帖子中显示不正确。应该是更像“localhost:4444 / wd / hub”;?有趣的是,我遇到了与Web Driver相反的问题,在通过RemoteWebDriver启动Firefox时遇到问题,但Firefox通过原生FirefoxDriver运行良好。 IE在远程工作正常。 - 大卫12年4月4日4:51
谢谢大卫!
答案 1 :(得分:0)
我不明白为什么你没有在远程网格config.json文件中配置你的Firefox二进制文件?那是我怎么做的。然后,您的DesiredCapabilities对象不需要定义它。可以找到提示here。
如果有效,JSON文件中的行可能如下所示:
"binary": "C:/Program Files/Mozilla Firefox/firefox.exe",
我想它不允许您从代码中动态设置二进制位置,但也许您可以尝试这种方式来证明它是否应该作为故障排除步骤。
答案 2 :(得分:0)
FirefoxProfile profile = new FirefoxProfile();
FirefoxBinary binary = new FirefoxBinary(new File("C:\\path to firefox\\firefox.exe"));
driver = new FirefoxDriver(binary, profile);
试试这个
答案 3 :(得分:0)
由于selenium web驱动程序无法找到Firefox的.exe文件而获得此类问题。请检查C:\ Program Files(x86)\ Mozilla Firefox中是否有exe文件,并且不要忘记设置具有java jdk路径的环境变量。
来源: - 阅读[解决了在PATH Selenium中找不到firefox二进制文件] [1] http://www.tech4crack.com/solved-cannot-find-firefox-binary-in-path/