web-dev-qa-db-ja.com

PATHにfirefoxバイナリが見つかりません。 Firefoxがインストールされていることを確認してください

Selenium Gridでは、単純なプログラムを実行しようとしていますが、コードにバイナリパスを追加しましたが、Cannot find firefox binary in PATHを取得しています。
私のコードとエラーを以下に示します。親切に助けが必要です。前もって感謝します。


コード

package Sample;
import Java.net.MalformedURLException;
import Java.net.URL;
import org.openqa.Selenium.Platform;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.remote.DesiredCapabilities;
import org.openqa.Selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
public class sample1 {
     WebDriver driver;
     String  BaseURL,NodeURL;
@BeforeTest
  public void beforeTest() throws MalformedURLException {
     BaseURL="www.google.com";
     NodeURL="http://192.168.10.162:5566/wd/hub";
     DesiredCapabilities capa =DesiredCapabilities.firefox();
     capa.setBrowserName("firefox");
     capa.setCapability("binary", "C:\\Users\\praveenraj.d\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
     capa.setPlatform(Platform.ANY);
     driver=new RemoteWebDriver(new URL(NodeURL),capa);
  }
   @Test
  public void f() throws InterruptedException {
      driver.get(BaseURL);
      System.out.println(driver.getTitle());
      Thread.sleep(50000);
  }
  @AfterTest
  public void afterTest() {
      driver.quit();
  }
 }


エラー

[TestNG] Running:
  C:\Users\praveenraj.d\AppData\Local\Temp\testng-Eclipse-1233453386\testng-customsuite.xml

FAILED CONFIGURATION: @BeforeTest beforeTest
org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN8
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: Host: 'IN-IF-WS1-0154', ip: '192.168.10.162', os.name: 'Windows 8', os.Arch: 'AMD64', os.version: '6.2', Java.version: '1.7.0_07'
Driver info: driver.version: FirefoxDriver
Command duration or timeout: 97 milliseconds
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
System info: os.name: 'Windows 8', os.Arch: 'x86', os.version: '6.2', Java.version: '1.7.0_13'
Driver info: org.openqa.Selenium.remote.RemoteWebDriver
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:187)
    at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:145)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:554)
    at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:216)
    at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:111)
    at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:129)
    at Sample.sample1.beforeTest(sample1.Java:28)
    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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.Java:84)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.Java:564)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:213)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:138)
    at org.testng.TestRunner.beforeRun(TestRunner.Java:641)
    at org.testng.TestRunner.run(TestRunner.Java:609)
    at org.testng.SuiteRunner.runTest(SuiteRunner.Java:335)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.Java:330)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.Java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.Java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.Java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.Java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.Java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.Java:1149)
    at org.testng.TestNG.run(TestNG.Java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.Java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.Java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.Java:175)
Caused by: org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN8
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: Host: 'IN-IF-WS1-0154', ip: '192.168.10.162', os.name: 'Windows 8', os.Arch: 'AMD64', os.version: '6.2', Java.version: '1.7.0_07'
Driver info: driver.version: FirefoxDriver
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
System info: os.name: 'Windows 8', os.Arch: 'x86', os.version: '6.2', Java.version: '1.7.0_13'
Driver info: driver.version: FirefoxDriver
    at org.openqa.Selenium.firefox.internal.Executable.<init>(Executable.Java:72)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:59)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:55)
    at org.openqa.Selenium.firefox.FirefoxDriver.getBinary(FirefoxDriver.Java:182)
    at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:107)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.Selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.Java:62)
    at org.openqa.Selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.Java:56)
    at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:216)
    at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:1)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at org.openqa.Selenium.remote.server.DefaultSession$1.run(DefaultSession.Java:170)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

SKIPPED CONFIGURATION: @AfterTest afterTest
SKIPPED: f

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 1
    Configuration Failures: 1, Skips: 1
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 1
Configuration Failures: 1, Skips: 1
===============================================

[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@93b52b: 27 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@3ba002: 22 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@fa930d: 6 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@1f9c5c8: 6 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@197f158: 6 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 4 ms
29
user2307574
File pathToBinary = new File("C:\\user\\Programme\\FirefoxPortable\\App\\Firefox\\firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();       
WebDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);
31
Achille

別のオプションは、テストクライアントではなくサーバーを構成することです。

スレーブノードサービスを設定して、Firefoxの場所を認識できるようにします。インストール場所はノードごとに変わる場合があります。また、異なるバージョンのFFへのアクセスをサポートするために、ノード上で複数のサービスを実行する必要さえあります。

Java -jar "Selenium-server-standalone-2.2.0.jar"
 -Dwebdriver.firefox.bin="C:\FirefoxCollection\Mozilla Firefox 36.0\firefox.exe"
20
Greg Domjan

Firefoxは->(c:/ Program Files(x86)/ mozilla firefox OR c:/ Program Files/mozilla firefox、noteなどのデフォルトの場所にインストールする必要があることを確認してください:firefoxのインストール時にはパスを変更しないので、デフォルトのパスにインストールしてください)firefoxが他の場所にインストールされている場合、Seleniumはそれらのエラーを表示します。

システム(Windows)環境変数でfirefoxを設定している場合は、それを削除するか、新しいfirefoxバージョンパスで更新します。

他の場所でFirefoxを使用する場合は、以下のコードを使用します。

FirefoxProfileが廃止されたため、以下のようにFirefoxOptionsを使用する必要があります。

新しいコード:

File pathBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);   
DesiredCapabilities desired = DesiredCapabilities.firefox();
FirefoxOptions options = new FirefoxOptions();
desired.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options.setBinary(firefoxBinary));

上記のコードの完全に機能するコードは次のとおりです。

System.setProperty("webdriver.gecko.driver","D:\\Workspace\\demoproject\\src\\lib\\geckodriver.exe");
File pathBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);   
DesiredCapabilities desired = DesiredCapabilities.firefox();
FirefoxOptions options = new FirefoxOptions();
desired.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options.setBinary(firefoxBinary));
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.co.in/");

以下のURLからfirefox用のgeckodriverをダウンロードします。

https://github.com/mozilla/geckodriver/releases

古いSelenium jarバージョンで機能する古いコード

File pathBinary = new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();       
WebDriver driver = new FirefoxDriver(firefoxBinary, firefoxProfile);
15
Shubham Jain

Seleniumサーバーを起動した後、パスにfirefoxを追加しましたか?その場合、Seleniumは引き続き古いパスを使用します。解決策は、分解Seleniumを再起動にして、更新されたパス環境変数を使用することです。

Firefoxがパスに正しく追加されているかどうかを確認するには、コマンドラインターミナル「cmd」を起動し、「firefox」+ Enterキーを押します。 firefoxが起動したら、すべてが正常であり、Seleniumサーバーを再起動すると問題が解決するはずです。

5
donfuxx

64ビットWindowsと64ビットFirefoxブラウザーを使用するC#でも、Seleniumで動作しないように見える同じ問題がありました。 64ビットブラウザを使用している場合は、32ビットブラウザを試してください。

驚いたことに、32ビットのFirefoxブラウザーは64ビットのWindowsでも問題なく動作します。

私の投稿の意図を明確にするために編集されました。

5
masospaghetti

PATHを変更せずにこの問題が発生しました。

私のPCはWin7、64ビットシステムです。64ビットシステムも使用している場合は、次のことを試してください。

  1. 現在のFirefoxをアンインストールします。
  2. 「C:\ Program Files(x86)\ Mozilla Firefox \」パスに新しいFirefoxをインストールします。

「Program Files」ではなく「Program Files(x86)」の下にある必要があります

それが役立つことを願っています。

2
Harry Chu

ここでこの質問に対するC#の回答はありませんでした。秘Theは、FirefoxOptionsインスタンスにBrowserExecutableLocationプロパティを設定し、それをドライバーコンストラクターに渡すことです。

        var opt = new FirefoxOptions
        {
            BrowserExecutableLocation = @"c:\program files\mozilla firefox\firefox.exe"
        };
        var driver = new FirefoxDriver(opt);
2
MSC

gecko driver以上を使用している場合は、firefox v50を追加する必要があります。

次のサンプルコードを使用します。

File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
System.setProperty("webdriver.gecko.driver","C:\\Users\\Downloads\\Selenium-Java-3.0.1\\geckodriver.exe");       
WebDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);
2
AZHAR WADIKAR
Java -jar Selenium-server-standalone-2.53.1.jar -Dwebdriver.firefox.bin="C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

Selenium jarファイルをデスクトップに配置し、cmdに移動して上記のコマンドを実行します。

1

一番簡単なことは、グリッドノードにFirefoxバイナリパスをノード構成の一部として登録させることです。クライアントが持っているのと同じ機能を使用しますが、名前でブラウザを選択し、ノードにそれを見つけさせることができます。

また、必要な機能は「firefox_binary」であり、「binary」ではないことに注意してください。このWikiページでFirefoxの機能の完全なリストを見ることができます。

https://code.google.com/p/Selenium/wiki/DesiredCapabilities

1
nirvdrum

この問題は、firefoxドライバーとご使用のfirefoxブラウザーバージョンの非互換性が原因である可能性があります。更新されたFirefoxブラウザーバージョンと互換性のある最新バージョンのfirefoxドライバーをダウンロードします。

1
K.Krishnakanth

Windows 10-64ビットOSでも同じ問題に直面しています。

OSが64ビットであるため、PCにfirefoxをインストールすると、そのインストール場所は「C:\ Program Files(x86)\ Mozilla Firefox」ではなく「C:\ Program Files\Mozilla Firefox\firefox.exe」になります。

「Mozilla Firefox」フォルダーを「C:\ Program Files(x86)」フォルダーにコピーして貼り付け、Seleniumスクリプトを実行します。

0
Pravin Jadhav

これは、コードで使用されているRemoteWebDriverによるものです。ノードマシンでfirefoxブラウザーを起動しようとします。

0
Rakesh

環境変数を変更し、firefox.exeへのパスを追加する必要があります。同じことをプログラムで行うこともできます Windows上のJavaアプリケーション内からPATH変数を設定/更新するにはどうすればよいですか? 。 Win8でも同じ問題が発生しました。

0
olyv