web-dev-qa-db-ja.com

PATHにfirefoxバイナリが見つかりません。 firefoxがインストールされていることを確認してください。 OSはVISTAのようです

どのブラウザでもスクリプトを実行できません。以下は、Firefoxで発生するエラーです。 firefoxがインストールされている場所は正しいです。何が悪いのか分からない。

Firefox 15を使用しています。SeleniumJava 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.<init>(Executable.Java:52)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:56)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:52)
    at org.openqa.Selenium.firefox.FirefoxDriver.<init>(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)
20
user2045704
  1. コマンドラインを開く(スタート->実行-> "cmd"と入力)
  2. タイプPATH
  3. ここに書かれているC:\Program Files\Mozilla Firefox15\Firefox.exe

それはおそらくここにはないでしょう-それはエラーが言うことだからです。修正方法

  1. スタートをクリック
  2. 「コンピューター」を右クリックし、「プロパティ」をクリックします
  3. 左側のメニューで「システムの詳細設定」を選択します
  4. 「詳細設定」タブに移動し、「環境変数...」をクリックします
  5. 下のウィンドウで[パス]を選択し、[編集...]をクリックします(管理者権限が必要です)
  6. セミコロンで区切られた目的のパスを最後に追加します
  7. コンピュータの可能な再起動が必要

それは彼がこのようにコンストラクタを変更するのに役立ちません:

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);
22
Pavel Janicek

ブラウザへのパスにスペースがある場合(例: "...\Program Files(x86)...")、paramの値に二重引用符を追加する必要があることに注意してください。

例:

-Dwebdriver.firefox.bin="D:\Program Files (x86)\Mozilla Firefox\firefox.exe"

二重引用符を追加すると、すべてが正常に実行されました。

4
Kosmos

最も簡単な方法は、ドライバーを定義する前に以下のコードを使用することです。

System.setProperty("webdriver.firefox.bin",
                    "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
3
Purus

プログラムの実行中にvm引数を追加する必要があります。これは

-Dwebdriver.firefox.bin=/custom/path/of/firefox/exe

IntelliJでIDEはるかに簡単な[実行]→[設定の編集...]でVMオプションは上記を追加します。

IntelliJ Run Configurations

Eclipseには、実行中にvm引数を指定するオプションもあります。このように、SeleniumでポータブルFirefoxを使用しています。

2
arulraj.net

何らかの理由で、環境変数を追加しても機能しませんでした。

この page (grid2)で説明されているように、コマンドラインノード構成でFirefoxへのパスを指定できました。

-browser “browserName=firefox,version=3.6,firefox_binary=c:\Program Files\Mozilla Firefox\firefox.exe ,maxInstances=3, platform=WINDOWS”
2
DevDave

私も同じ問題に苦しんでいました。最後に、以下に示すように機能にバイナリ値を設定することで解決しました。実行時にこの値を使用するため、設定する必要があります。

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);

これで完了です!!!ハッピーコーディング:)

2

このコードは単に私のために働いた

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);
0
Mpathak

プロジェクトをあるコンピューターから別のコンピューターに移動するときにこの問題が発生しました。解決策は、nugetからSelenium Webdriverをリロードすることでした。

0
user890332

Visual Studioでテストを実行しているときにこのエラーメッセージが表示されました。Firefoxがロードされず、OPのエラーメッセージが表示されました。

Firefoxを手動で開いたところ、Firefox自体を更新する必要があることがわかりました(ロードする前に更新しました)。終了したら、テストスイートを再実行し、Firefoxがうまく表示され、テストは適切に実行されました。突然このエラーが発生した場合は、マシン上の何かを更新する前にこの回答を試してください。

0
Justa
File pathBinary = new File("Firefox.exe location");
FirefoxBinary ffBinary = new FirefoxBinary(pathBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
FirefoxDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);

ブラウザのバイナリを追加する必要があります

または

永遠に最良のソリューション:環境変数にFirefox.exeの場所を追加するだけ

0
dheeraj reddy

私も同じ問題に直面しており、それを修正するのに一週間以上を費やしました。マシンを再起動すると修正されたようですが、一時的なものです。

レジストリファイルを編集して、一時ポートの最大数を増やす解決策がありました。これで問題は修正されたようですが、それも一時的なものです。

しばらくの間、使用できなくなったドライバーにアクセスしようとしているかどうかを考え続けていたので、電話しようとしました:

driver.quit()

そして、ブラウザインスタンスを再作成しました。これにより、SessionNotFoundExceptionのみが提供されました。

バイナリのパスを設定するために、System.setPropertyffCapability.setCapabilityの両方を使用していたことがわかりました。

それからSystem.setProperty =>だけで試しました。

ffCapability.setCapability =>出来上がり!!!これまでのところ、うまく機能しています。明日、翌日、翌日、スクリプトを再実行しようとしたときにうまく機能することを願っています... :)

Bottomline:これのみを使用

ffCapability.setCapability("binary", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //for windows`

それが役に立てば幸い!

0
user6376

これを試して:

System.setProperty("webdriver.gecko.driver", "geckodriver p");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver = new FirefoxDriver(capabilities);
0
Daniel

私にとっては、パス変数を「C:\ Program Files(x86)\ Mozilla Firefox」ではなく「C:\ Program Files\Mozilla Firefox」に変更するだけでした。

0
Eyal Sooliman