在PATH中找不到firefox二进制文件。 确保安装了firefox。 操作系统似乎是:VISTA
我无法在任何浏览器中运行我的脚本。 下面是我得到的firefox错误。 firefox的安装位置是正确的。 不知道出了什么问题。
我正在使用Firefox 15. Selenium Java 2.2.0和Eclipse Juno
我的测试用例如下:
import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; public class FirstTest { private WebDriver _driver; @Before public void setUp() throws Exception { System.setProperty("webdriver.firefox.driver","C:\\Program Files\\Mozilla Firefox15\\Firefox.exe"); FirefoxProfile firefoxProfile = new FirefoxProfile(); _driver = new FirefoxDriver(firefoxProfile); } @Test public void Login() throws Exception { _driver.get("https://www.google.co.in/"); assertEquals("Google", _driver.getTitle()); _driver.findElement(By.id("lst-ib")).clear(); _driver.findElement(By.id("lst-ib")).sendKeys("selenium"); _driver.findElement(By.name("btnG")).click(); _driver.findElement(By.linkText("Selenium - Web Browser Automation")).click(); assertEquals(" ", _driver.getTitle()); assertEquals("Selenium - Web Browser Automation", _driver.getTitle()); } @After public void tearDown() throws Exception { _driver.quit(); } }
以下是我得到的错误:
org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build info: version: '2.20.0', revision: '16008', time: '2012-02-27 19:03:59' System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_26' Driver info: driver.version: FirefoxDriver at org.openqa.selenium.firefox.internal.Executable.(Executable.java:52) at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:56) at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:52) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:88) at FirstTest.setUp(FirstTest.java:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) java.lang.NullPointerException at FirstTest.tearDown(FirstTest.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
- 打开命令行(开始 – >运行 – >键入“cmd”)
- 键入
PATH
- validation您可以在此处看到编写的
C:\Program Files\Mozilla Firefox15\Firefox.exe
它可能不会在这里 – 因为这就是错误所说的。 怎么解决?
- 单击开始
- 右键单击“计算机”,然后单击“属性”
- 在左侧菜单中选择“高级系统设置”
- 转到“高级”选项卡,然后单击“环境变量…”
- 在下面的窗口中选择“路径”,然后单击“编辑…”(需要管理员权限)
- 最后添加所需的路径,分号分隔
- 可能需要重启计算机
他没有帮助然后像这样改变构造函数:
File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox15\\Firefox.exe"); FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary); FirefoxProfile firefoxProfile = new FirefoxProfile(); FirefoxDriver _driver = new FirefoxDriver(ffBinary,firefoxProfile);
要注意,如果浏览器的路径有空格(例如“… \ Program Files(x86)…”),你需要在param的值中添加双引号。
例:
-Dwebdriver.firefox.bin="D:\Program Files (x86)\Mozilla Firefox\firefox.exe"
添加双引号后,所有已成功运行。
出于某种原因,添加环境变量对我来说不起作用。
我能够在命令行节点配置中指定Firefox的路径,如本页所述 (grid2)。
-browser “browserName=firefox,version=3.6,firefox_binary=c:\Program Files\Mozilla Firefox\firefox.exe ,maxInstances=3, platform=WINDOWS”
我也遇到了同样的问题。 最后,我通过设置function中的二进制值来解决它,如下所示。 在运行时,它使用此值,因此必须设置。
DesiredCapabilities capability = DesiredCapabilities.firefox(); capability.setCapability("platform", Platform.ANY); capability.setCapability("binary", "/ms/dist/fsf/PROJ/firefox/16.0.0/bin/firefox"); //for linux //capability.setCapability("binary", "C:\\Program Files\\Mozilla Firefox\\msfirefox.exe"); //for windows WebDriver currentDriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
你完成了! 快乐编码:)
最简单的方法是在定义驱动程序之前使用以下代码。
System.setProperty("webdriver.firefox.bin", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
你必须在运行程序时添加vm参数。 这应该是这样的
-Dwebdriver.firefox.bin=/custom/path/of/firefox/exe
在IntelliJ IDE中更简单的转到运行→编辑配置…在VM选项中添加以上内容。
Eclipse还可以选择在运行时提供vm参数。 这样我就可以使用带有selenium的便携式Firefox。
我也遇到了同样的问题,我花了一个多星期来修复它。 重启我的机器好像已经修好了,但只是暂时的。
有一个解决方案是通过编辑注册表文件来增加临时端口的最大数量。 这似乎解决了问题,但也只是暂时的。
有一段时间,我一直在想,如果我试图访问一个不再可用的驱动程序,所以我试着打电话:
driver.quit()
然后重新创建浏览器实例,它只给了我: SessionNotFoundException 。
我现在意识到我已经使用了BOTH System.setProperty
以及ffCapability.setCapability
来设置二进制文件的路径。
然后我尝试了只有System.setProperty
=>那里没有运气。
只有ffCapability.setCapability
=> Voila !!! 到目前为止它一直很好。 希望当我尝试明天以及后一天和后一天重新运行我的脚本时它会很好用… 🙂
底线:仅使用此选项
ffCapability.setCapability("binary", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //for windows`
希望能帮助到你!
对我来说,只需将路径变量更改为:’C:\ Program Files \ Mozilla Firefox’而不是’C:\ Program Files(x86)\ Mozilla Firefox’
我在Visual Studio中运行测试时收到此错误消息:Firefox根本无法加载,我收到了OP的错误消息。
我手动打开Firefox,发现它需要更新自己(它在加载之前就这样做了)。 完成后我重新尝试了测试套件,Firefox出现得很好,测试运行正常。 如果您突然收到此错误,请在更新机器上的任何内容之前尝试此答案。
这段代码对我来说很简单
System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox 54\\firefox.exe"); String Firefoxdriverpath = "C:\\Users\\Hp\\Downloads\\geckodriver-v0.18.0-win64\\geckodriver.exe"; System.setProperty("webdriver.gecko.driver", Firefoxdriverpath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); driver = new FirefoxDriver(capabilities);
将项目从一台计算机移动到另一台计算机时遇到此问题。 解决方案是从nuget重新加载selenium webdriver。
尝试这个:
System.setProperty("webdriver.gecko.driver", "geckodriver p"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); driver = new FirefoxDriver(capabilities);