FFバージョン19を使用しています
昨日まではすべて正常に機能していましたが、今日の朝に突然このエラーが発生し始めました。以前に実行していたのとまったく同じコードがあり、何も変更されていません。
エラーメッセージ:
Test 'M:.TestCases.12' failed: Failed to start up socket within 45000
OpenQA.Selenium.WebDriverException: Failed to start up socket within 45000
at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.ConnectToBrowser(Int64 timeToWaitInMilliSeconds)
at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()
at OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile, TimeSpan commandTimeout)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxProfile profile)
0 passed, 1 failed, 0 skipped, took 145.80 seconds (Ad hoc).
これが私のソースコードです:
public static IWebDriver GetDriver()
{
switch (Common.BrowserSelected)
{
case "ff":
FirefoxProfile profile = new FirefoxProfile();
profile.SetPreference("network.http.phishy-userpass-length", 255);
profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", url);
drv = new FirefoxDriver(profile);
break;
case "ie":
var options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability(CapabilityType.AcceptSslCertificates, true);
drv = new InternetExplorerDriver(options);
break;
case "chrome":
//_driver = new ChromeDriver();
break;
}
return drv;
}
Firefox 19の「サポート」は、Seleniumの最新バージョンで追加されました。したがって、.NETを使用しているため、最新の直接ダウンロードこの投稿の時点はバージョン2.31.2です。
Firefox43とSelenium2.48でこの問題が発生します。これは、Seleniumドライバーサーバーが32ビットプロセスで実行されていて、64ビットバージョンのFirefoxを起動したときに発生します。
原因は、Webdriverサーバーがポート7055に接続しようとしたためです。このポートは、Firefox実行可能ファイルで実行されているWebDriverによって開かれる必要があります。しかし、www.sysinternals.comのTcpViewで、Firefoxがこのポートを開かないことがわかります。したがって、ドライバーはタイムアウト(45秒)が経過するまで待機します。
これは、Windowsファイアウォールを完全にオフにした後でも発生します。
インターネットで見つけたすべての投稿は役に立ちません:Seleniumのアップグレード、Firefoxのダウングレードなど。
しかし、同じFirefox 43の32ビットバージョンをインストールした後、それは機能します。 TcpViewで、Firefox32ビットがポートを正しく開く方法を確認します。
私のコードでは
_FirefoxProfile Prof = new FirefoxProfile();
FirefoxBinary Bin = new FirefoxBinary(sBrowserExe);
mDriver = new FirefoxDriver(Bin, Prof);
_
_sBrowserExe = "C:\Program Files\Mozilla Firefox 43\firefox.exe"
_を使用すると、Firefox 43の64ビットバージョンが起動し、タイムアウト例外が発生します。
sBrowserExe = "C:\Program Files (x86)\Mozilla Firefox 43\firefox.exe"
を使用すると、Firefox 43の32ビットバージョンが起動し、動作します。
UPDATE:Firefoxの開発者はSeleniumのサポートを完全に破りました。 48以降の新しいFirefoxバージョンでは、すべての拡張機能をインストールするためにデジタル署名が必要です。
https://wiki.mozilla.org/Addons/Extension_Signing
私が理解していないのは、Seleniumの人々が現在のSeleniumドライバーの署名を取得できない理由です。
Firefoxバージョン47.0には、Seleniumでの使用を許可しないバグがあります。このバグはバージョン47.0.1で修正されています。
48.0以降のFirefoxバージョンでは、古いSeleniumドライバーはインストールされなくなりました。それらはMarionette(= Gecko)ドライバーで自動化する必要があります。
問題は、Marionetteがまだベータ版であり、多くの機能が不足しているため、Firefoxの新しいバージョンを自動化するソリューションが現在ないことです。
ここに表示されているように、新しいドライバーにはバグがたくさんあります: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver/status
Webdriverをアップグレードしても問題が解決しない場合は、FireFoxをダウングレードして問題を解決できます。
どのバージョンのSelenium IDEを使用していますか?Firefoxバージョンをダウングレードしてみてください。SeleniumIDEのリリースノートは、以下のリンクに記載されています。
https://code.google.com/p/Selenium/wiki/SeIDEReleaseNotes
お役に立てれば。
Nugetパッケージマネージャーにすべての更新プログラムをインストールします。 IDEを再起動します。
Firefoxバージョンのダウングレードはテストにはお勧めしません。しかし、最後の1つのバージョンのダウングレードは良さそうです。
この解決策は私のために働いた。