web-dev-qa-db-ja.com

Selenium 3.0のセットアップ方法、c#で「geckodriver.exeファイルが存在しません...」というエラーが表示される

Visual StudioのSeleniumを3.0に、Firefoxを47.0に更新しましたが、ローカルWebドライバーモードを使用しようとすると、このエラーが発生します。geckodriver.exeファイルが現在のディレクトリまたはPATH環境変数のディレクトリに存在しません。

リモートモード(seleniumhub)を使用している場合、Firefox45.0バージョンを使用していても正常に動作します。

いくつかの例を検索しようとしましたが、c#については何も見つかりませんでした。Javaのみで、それでも機能させることができませんでした。

私のウェブドライバーの設定:

 switch (ConfigurationManager.AppSettings["WebDriverMode"].ToLower())
                {
                    case "local":
                        switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
                        {
                            case "firefox":
                                driver = new AdvancedFirefoxDriver();
                                break;
                            case "ie":
                                driver = new AdvancedInternetExplorerDriver();
                                break;
                            case "chrome":
                                driver = new AdvancedChromeDriver();
                                break;
                            default:
                                throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower()));
                        }

                        break;
                    case "remote":
                        var huburl = new Uri(ConfigurationManager.AppSettings["SeleniumHubAddress"]);
                        DesiredCapabilities capabilities;
                        switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower())
                        {
                            case "firefox":
                                capabilities = DesiredCapabilities.Firefox();
                                break;
                            case "ie":
                                capabilities = DesiredCapabilities.InternetExplorer();
                                break;
                            case "chrome":
                                capabilities = DesiredCapabilities.Chrome();
                                break;
                            default:
                                throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower()));
                        }

                        capabilities.IsJavaScriptEnabled = true;
                        driver = new AdvancedRemoteWebDriver(huburl, capabilities);
                        break;
                    default:
                        throw new NotImplementedException();
                }
8
safary

Selenium 3.0以降、Firefoxブラウザーにはgeckodriverを使用する必要があります。

ここから最新のgeckodriverをダウンロードしてください https://github.com/mozilla/geckodriver/releases

2つのオプションがあります。

  1. windowsシステム環境変数PATHにgeckodriverパスを入力します。
  2. または、次のようにプログラムでgeckodriver.exeの場所を指定します。

System.Environment.SetEnvironmentVariable("webdriver.gecko.driver",@"/path/to/geckodriver.exe"

注:PATH環境変数を設定すると、システムの再起動が必要になる場合があります。

Firefox 47以降(それを除く)、Seleniumはデフォルトでgeckodriver機能を使用します。 47以前のバージョンでは、Seleniumがこれらのバージョンでの作業に使用したようなFirefoxの組み込みサポートを使用できるように、この機能をオフにする必要がある場合があります。

同じことを達成するためのJavaバージョン:

DesiredCapabilities d = new DesiredCapabilities();
d.setCapability("marionette", false);  // to disable marionette.
WebDriver driver = new FirefoxDriver(d);

参照:

  1. C#でシステムプロパティを設定する方法
  2. https://msdn.Microsoft.com/en-us/library/z46c489x.aspx
  3. https://superuser.com/questions/317631/setting-path-in-windows-7-command-Prompt
  4. https://stackoverflow.com/a/40466109/2575259
8

SeleniumのChromeドライバーで同様の問題が発生しました。自動化フレームワークの構築に関するコースをたどっていて、テストではなく、フレームワーク参照でNuGetパッケージをインストールしました。-- enter image description here

1
Mirza Sisic

ここからgeckodriverをダウンロードできます: https://github.com/mozilla/geckodriver/releases 次に、次のようにファイルのディレクトリをFirefoxDriverコンストラクターに追加する必要があります。
new FirefoxDriver("geckoDriverDirectory")

0
Aldiyar