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 。からダウンロードできます。
使用方法:
コード例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);
}
コードがこのドライバーをまだ検出しない理由についての助けや洞察は大歓迎です。
パスにgeckodriver.exeを配置してみてください:C:\ Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug
このリンクでgeckodriver.exeを見つけることができます。
Selenium.Firefox.Webdriver NuGetパッケージをインストールします。
これにより、geckodriver.exeがbinフォルダーにコピーされます。
この解決策は、問題の解決に役立つ場合があります(ただし、私を助けてくれました)
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();
}
}
U geckodriver.exeをプロジェクトに含め、コンパイル時にターゲットディレクトリにコピーすると、webdriverは以前のバージョンと同様に機能します。
これは、この投稿の後、初心者が下の短いバージョンを書く人のためのものです:)最も簡単な方法は、使用しているブラウザをすべてダウンロードし、すべてのドライバを抽出する必要があることです。 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;
VisualStudio
コンソールモードでNuGetパッケージマネージャーを使用してSeleniumをインストールします。PM> Install-Package Selenium.WebDriver
私はこれを試してみます:
最初に、C#プロジェクトがクライアントドライバーのライブラリと同じ.NETフレームワークバージョンを実行していることを確認します(Selenium HQからダウンロードすると、ベースとなっているフレームワークバージョンが表示されます)。 2017年9月15日の時点で3.5と4.0があるので、4.0クライアントドライバーライブラリを使用するには、C#プロジェクトを.NET 4.0にダウングレードする必要がありました。
コードで、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();
パス環境変数に実行可能ファイルがある場合、それはおそらくそれへのアクセス許可がないことを意味します。回避策として、管理者として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をチェックするためにコードでそれを指定しました。
このエラーも発生し続け、最終的に修正するためにできる唯一のことは(この問題を抱えているすべての人にとって最良の答えであるかどうかはわかりません)、メインライブラリディレクトリに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
このソリューションは、VS2017でうまくいきました。次のようにgeckodriver.exeをプロジェクトフォルダーにコピーしました。
C:\ Users\pedne\Desktop\C#\ FirstSolution\FirstSolution\bin\Debug
プロジェクトで、[ツール]-> [Nugetパッケージマネージャー]-> [ソリューション用のNuGetパッケージの管理...]をクリックします。開いているウィンドウで[Selenium.FireFox.WebDriver]を選択します。
これは、Seleniumプロジェクトにドライバーを配置するためのイーザーフォームです。
Geckodriver execの存在しないディレクトリを探していたため、ビルドが失敗するVisual Studio 2017の問題がありました。また、nuget pack managerを使用して追加しました。私が見つけたのは、Visual Studio-> Project-> Properties-> Buildであり、ビルドをアーキテクチャに依存しない場合は動作します:プラットフォームターゲットは任意のCPUであり、他のチェックボックスを残す(32ビットを優先、安全でないコードを許可、コードを最適化する)すべてチェックを外すか、32ビットを優先するだけをオンにします(これは私のシステムのデフォルトです)。 btw:my Applicationは.NET Framework 4.5.2コンソールアプリケーションでした