web-dev-qa-db-ja.com

geckodriver.exeが現在のディレクトリまたはパス変数にない、Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

Selenium 2.53.1およびFirefox 47.0.1に関する多くの質問がありましたが、Selenium 3 Betaリリースに関する質問はありませんでした。新しいgecko/marionette Firefox Webドライバーを使用しようとしていますが、ドライバーの場所はありますが。私の環境パス、プログラム内のFirefoxインストールフォルダ、およびシステム環境内のドライブの場所を指定すると、まだ正しく動作しません。

エラー:

geckodriver.exeは、現在のディレクトリまたはPATH環境変数のディレクトリに存在しません。ドライバーは https://github.com/mozilla/geckodriver/releasesからダウンロードできます。

使用方法:

  • Selenium 2.53.1サーバー
  • Firefox 48
  • Selenium 3ベータDLL
  • ウィンドウ10

コード例1

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         Driver = new FirefoxDriver();
    }

以下も試みました:

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
         service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
         FirefoxOptions options = new FirefoxOptions();
         TimeSpan time = TimeSpan.FromSeconds(10);
         Driver = new FirefoxDriver(service, options, time);
    }

コードがこのドライバーをまだ検出しない理由についての助けや洞察は大歓迎です。

26
SeanS

パスにgeckodriver.exeを配置してみてください:C:\ Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug

このリンクでgeckodriver.exeを見つけることができます。

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

26
vdus

Selenium.Firefox.Webdriver NuGetパッケージをインストールします。

これにより、geckodriver.exeがbinフォルダーにコピーされます。

19
Hans Vonn

この解決策は、問題の解決に役立つ場合があります(ただし、私を助けてくれました)

public class TestResult {

    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [TestInitialize]
    public void SetupTest() {
        FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver", "geckodriver.exe");
        service.Port = 64444;
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
        driver = new FirefoxDriver(service);
        baseURL = "http://localhost:49539";
        verificationErrors = new StringBuilder();
    }
}
9
Angus Wu

U geckodriver.exeをプロジェクトに含め、コンパイル時にターゲットディレクトリにコピーすると、webdriverは以前のバージョンと同様に機能します。

4
Chalmette

これは、この投稿の後、初心者が下の短いバージョンを書く人のためのものです:)最も簡単な方法は、使用しているブラウザをすべてダウンロードし、すべてのドライバを抽出する必要があることです。 C:\Selenium\があり、VisualStudioに移動し、ここからを追加しますSelenium packages画像 ここをクリック コンソールでこのコードを記述PM>Install-Package Selenium.WebDriverその後、ドライバーディレクトリをコピーし、Windowsの検索タブタイプ変数から(システム環境と変数の編集)shown pic2このウィンドウでは、詳細タブが下にあります環境変数...こちらあなたはSystem variablesセクションを見つけてPATH or Path変数を見つけ、それを編集して注意してくださいdon't delete it!!次のクリックnew-のディレクトリを貼り付けすべてのwindws okボタンをクリックしてください。 VSプログラムを再起動して確認します。この後、DirectorパスをConstructorに追加する必要はありません。

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 

もう1つ、ファイルをインポートすることを忘れないでください。

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;

より高度なIT担当者向け。

  1. 環境パスに自分のドライバディレクトリに追加します。
  2. VisualStudioコンソールモードでNuGetパッケージマネージャーを使用してSeleniumをインストールします。

    PM> Install-Package Selenium.WebDriver

  3. vSを再起動します。
1
Said

私はこれを試してみます:

  1. 最初に、C#プロジェクトがクライアントドライバーのライブラリと同じ.NETフレームワークバージョンを実行していることを確認します(Selenium HQからダウンロードすると、ベースとなっているフレームワークバージョンが表示されます)。 2017年9月15日の時点で3.5と4.0があるので、4.0クライアントドライバーライブラリを使用するには、C#プロジェクトを.NET 4.0にダウングレードする必要がありました。

  2. コードで、Firefoxドライバーサービスを作成するときは、geckodriver.exeがある場所へのパスを明示的に指定するようにしてください。 FirefoxDriverService.CreateDefaultServiceへの呼び出しにパスパラメータをどのように追加したかをご覧ください。

    using OpenQA.Selenium.Firefox;
    
    public static class FirefoxInitialise
    {
      private static IWebDriver Driver{get; set;}
      public static IWebDriver Init()
      {
       // I'm assuming your geckodriver.exe is located there:
       // @"C:\MyGeckoDriverExePath\geckodriver.exe"
       FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\MyGeckoDriverExePath\");
       service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary
       FirefoxOptions options = new FirefoxOptions();
       TimeSpan time = TimeSpan.FromSeconds(10);
       Driver = new FirefoxDriver(service, options, time);
       return Driver;
     }
    }
    

So you can use :

IWebDriver driver = FirefoxInitialise.Init();
1

パス環境変数に実行可能ファイルがある場合、それはおそらくそれへのアクセス許可がないことを意味します。回避策として、管理者としてVisual Studioを実行してみてください。

または、許可がある場所に移動することもできます。例えば:

var service = FirefoxDriverService.CreateDefaultService(@"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;

var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);

_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));

そこで、バイナリをD:\tmp\Binaries\に置き、そこにあるgeckodriverをチェックするためにコードでそれを指定しました。

0
Syakur Rahman

このエラーも発生し続け、最終的に修正するためにできる唯一のことは(この問題を抱えているすべての人にとって最良の答えであるかどうかはわかりません)、メインライブラリディレクトリにgeckodriver.exeを配置してから開きましたwebdriver.py

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/firefox/webdriver.py

次の行を見つけました:executable_path="geckodriver", firefox_options=None,

変更して:

executable_path="/Library/geckodriver", firefox_options=None

0
Milena Paz

このソリューションは、VS2017でうまくいきました。次のようにgeckodriver.exeをプロジェクトフォルダーにコピーしました。

C:\ Users\pedne\Desktop\C#\ FirstSolution\FirstSolution\bin\Debug

0
PrashantMP

プロジェクトで、[ツール]-> [Nugetパッケージマネージャー]-> [ソリューション用のNuGetパッケージの管理...]をクリックします。開いているウィンドウで[Selenium.FireFox.WebDriver]を選択します。

これは、Seleniumプロジェクトにドライバーを配置するためのイーザーフォームです。

0
Diego Montero

Geckodriver execの存在しないディレクトリを探していたため、ビルドが失敗するVisual Studio 2017の問題がありました。また、nuget pack managerを使用して追加しました。私が見つけたのは、Visual Studio-> Project-> Properties-> Buildであり、ビルドをアーキテクチャに依存しない場合は動作します:プラットフォームターゲットは任意のCPUであり、他のチェックボックスを残す(32ビットを優先、安全でないコードを許可、コードを最適化する)すべてチェックを外すか、32ビットを優先するだけをオンにします(これは私のシステムのデフォルトです)。 btw:my Applicationは.NET Framework 4.5.2コンソールアプリケーションでした

0
Scott Maretick