0

Visual Studio 2017内でSelenium.WebDriver v3.7(NuGet)、Firefox ESR v52.4.1(64ビット)、geckodriver v0.19.1をフックしようとしています。非常に簡単なテストコンソールアプリケーションです。私のWindows 10 PATHシステム環境変数に追加なぜSeleniumはタイムアウトしますか?

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver\0.19.1"); 
     service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; 
     IWebDriver driver = new FirefoxDriver(service); 
     driver.Navigate().GoToUrl("http://news.bbc.co.uk"); 
    } 
} 

geckodriverディレクトリがです。

ただし、FirefoxDriverのインスタンス化はタイムアウトします。以下は(検閲無関係な内容のカップルと)スタックトレースです:

1510233068873 geckodriver  INFO geckodriver 0.19.1 
1510233068878 geckodriver  INFO Listening on 127.0.0.1:65327 
1510233070006 mozrunner::runner  INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\x\\AppData\\Local\\Temp\\rust_mozprofile.qt9HYniTrrCC" 

Unhandled Exception: OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://localhost:65327/session timed out after 60 seconds. ---> System.Net.WebException: The request was aborted: The operation has timed out. 
    at System.Net.HttpWebRequest.GetResponse() 
    at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) 
    --- End of inner exception stack trace --- 
    at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) 
    at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute) 
    at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxDriverService service) 
    at Selenium3Stuff.Program.Main(String[] args) in c:\users\x\source\repos\Selenium3Stuff\Selenium3Stuff\Program.cs:line 12 

誰も私が何が起こっているか理解するのに役立つことはできますか? FirefoxDriverUseLegacyImplementationオプションをtrueに設定して作成すると(つまり、geckodriverをバイパスすると)、すべて正常に動作します。

+0

タイムアウトは、ブラウザがドライバに応答できないために発生するために発生します。これはおそらく、使用しているドライバのバージョンがESR 52と互換性がないためです。推奨最小バージョンは55です。 –

+0

oo ... good info @FlorentB。お勧めのバージョン情報のソースを教えてください。 – Mark

+1

リリースv0.19.0のコメントを確認してください:https://github.com/mozilla/geckodriver/releases –

答えて

1

@FlorentB。で指摘されているように、サポートされていないバージョンのFirefoxを使用していました。私はgeckodriver v0.19.1(32-bit)でFirefox v56.0(32ビット)を使用しました。教訓:リリースノートに記載されているバージョンに注意してください。

0

エラーがそれをすべて言う:

Unhandled Exception: OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://localhost:65327/session timed out after 60 seconds. ---> System.Net.WebException: The request was aborted: The operation has timed out. 

あなたがtrueに設定UseLegacyImplementationオプション(したがって、geckodriverバイパス)を使用するときにまた、すべてが正常に動作します。最初のケースで

geckodriverはポート何とか占有され65327をリッスンしようとしています。 HTTPリクエストを完了できず、System.Net.WebExceptionが発生します。

解決策は他のサービスを停止し、ポートをフリーにしてGeckoDriverが待機するようにすることです。それでも問題が解決しない場合はSystem Rebootとしてください。

+0

はい、要求がタイムアウトしたのがわかりますが、理由を特定できません。 geckodriver.exeがリスンし始める一時的なポートでブラウザを手動でポイントすると、私は応答を返す。だから私はそれが占領された港の問題になる可能性があるとは思わない。私はこれを試してきましたが、別のエフェメラルポートが使用されるたびにこれを試しました。 – Mark

+0

それは正しいです。 'geckodriver。実行中に任意のランダムなポートを取得します。 「テスト実行」が「進行中」の間に予期せぬ障害を避けるために、他のサービスから「セレン関連テスト」を実行する「テストベッド」すなわち「テスト環境」を隔離する必要があります。 – DebanjanB

+0

これは私のローカルマシンで、簡単なプログラムです。私はまだタイムアウトが起こっている理由を理解していません。 – Mark

0

私はMozilla Firefoxのブラウザv56.0(32ビット)と、以下のNugetパッケージをインストール:

ドライバを使用してMozilla Firefoxからwww.google.co.inを開くことを自動化できました。

関連する問題