Seleniumエラー-リモートWebDriverへのHTTP要求が60秒後にタイムアウトしました


85

私はSeleniumを数か月使用しており、内部テストプロセスの一部を自動化するために使用しています。スクリプトは問題なく通過しています。最近、FF 27.01を使用してC#2.40.0 Webドライバーにアップグレードしましたが、スクリプトがランダムな場所で失敗し、次のエラーが発生します。

[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
[09:01:20]
[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
   at OpenQA.Selenium.Support.UI.DefaultWait`1.PropagateExceptionIfNotIgnored(Exception e)
   at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition)
   at Portal.Test.Helpers.Process_Bookings.OpenBookings.SelectBooking(String bookingnumber)
   at Portal.SmokeTest.SmokeRunTest.Booking() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 68
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
--TearDown
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Close()
   at Portal.Test.Helpers.Setup.CloseWebdriver()
   at Portal.SmokeTest.SmokeRunTest.TearDown() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 162
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)

私が管理した最新のエラーは、1行のコードまで追跡できました。

_setup.driver.FindElement(By.XPath("//button[@class='buttonSmall lockBookingButton']")).Click();

厄介なのは、問題を修正しようとするのが難しいことです。まるでローカルマシンでテストを実行するかのように、デバッグで合格します。さらに、テストを実行しているビルドマシンのNUNITランナーを介して実行すると、合格します。Teamcityを使用する場合、自動ビルド実行プロセスの一部としてのみ失敗するようです。私が言ったように、これは数ヶ月前から正常に動作しており、変更されたのはセレンWebドライバーキットだけです。

以前、デバッグ中にこの問題が発生しました。Click()コード行が呼び出されたとき、Firefoxがロックされているように見え、テストを停止するだけでFirefoxを続行できます。ここには、Webドライバーソースの変更を含むいくつかの提案がありますか?他の誰かが何か提案をすることができれば、可能であればそのルートをたどらないようにしたいと思います。


この設定を使用するいくつかの独立したプロジェクトでまったく同じ問題が発生しましたが、これに対する回避策はまだありません。私たちの最善の策は、WebDriverおよびFirefoxアセンブリの古いバージョンにダウングレードすることでした。また、この動作の原因がWebDriverによるものなのかFirefoxによるものなのかもわかりません。
Dio F

回答:


23

Chromeドライバー(v2.23)を使用して/ TeamCityを介してテストを実行すると同様の問題が発生しました。Chromeのオプションに「サンドボックスなし」フラグを追加することで問題を修正できました。

var options = new ChromeOptions();
options.AddArgument("no-sandbox");

FFドライバーに同様のオプションがあるかどうかはわかりません。私が理解していることから、この問題は、SYSTEMアカウントでSeleniumを実行しているTeamCityと関係があります。


これは私の問題も解決します。何ヶ月も試していなかったので、Chromeテストを実行できなくなりました。ありがとうcombatc2–
エティエンヌ

1
私のコードはIISでホストされている環境で正常に実行されていて、突然停止しましたが、単体テストでは引き続き機能しました。この行を追加すると、IIS環境で再び機能するようになりました。ありがとう!
レジェンド

1
私はそれをvar options = new ChromeOptions(); options.AddArgument("--no-sandbox");C#バージョンのWebdriver3.14で動作するように削除しました 。
moto_geek

20
new FirefoxDriver(new FirefoxBinary(),new FirefoxProfile(),TimeSpan.FromSeconds(180));

上記のコード行を使用してブラウザを起動します。それは私のために働いた。


私たちのためにも修正されました。FFドライバーだけを作成した基本的なスクリプトを実行すると、60秒のタイムアウトが100%の時間で機能しました。データベースへの接続を開く/読み取り/書き込み/ FFを開く直前に実行するリソースを大量に消費するスクリプトを実行すると、タイムアウトが60になると、最大50%の確率でエラーが発生します。タイムアウトを3分に増やすと、問題が修正されました。Webdriverは、エンジンをウォームアップするのにもう少し時間が必要なようです。
KayakinKoder 2017年

13

私は数ヶ月前にこの問題に最初に遭遇しました(これもclick()コマンドで)、それ以来それは私にとって問題でした。.NETSeleniumバインディングに何らかの問題があるようです。IEドライバーに取り組んでいる人によるこのブログ投稿は、何が起こっているのかを説明するのに役立ちます。

http://jimevansmusic.blogspot.com/2012/11/net-bindings-whaddaymean-no-response.html

残念ながら、この問題に対する実際の解決策はないようです。この問題がSelenium開発者に提起されたときはいつでも(ここを参照)、これは典型的な応答です:

再現可能なシナリオが必要です。これには、サンプルページ、または問題を再現できる公開サイトのページへのリンクが含まれている必要があります。

一貫して再現可能なテストケースを提出できる場合、それはこのバグを永久に休ませるために非常に役立つ可能性があります。

そうは言っても、その間にこの回避策を試すことができるかもしれません。使用しようとしclick()ているHTMLボタンonclickにJavascriptを含む属性がある場合は、コマンドを呼び出すのではなく、JavascriptExecutorを使用してそのコードを直接実行することを検討してclick()ください。onclickJavascriptを直接実行すると、一部のテストに合格できることがわかりました。


9

Firefoxでも同じ問題がありました。オプション付きのChromeに切り替えましたが、それ以降はすべて問題ありません。

ChromeOptions options = new ChromeOptions();
 options.AddArgument("no-sandbox");

 ChromeDriver driver = new ChromeDriver(ChromeDriverService.CreateDefaultService(), options, TimeSpan.FromMinutes(3));
 driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(30));

私はここで間違っている可能性がありますが、最後の行は効果がないようです。PageLoadはTimeSpan自体であり、.Add on TimeSpanは純粋関数であり、PageLoadを変更せず、破棄される新しいTimeSpanを返すだけです。
JasonRitchie20年

3

私の場合、ボタンのタイプはsubmitそうbuttonではなく、に変更ClickしますSumbitその後、すべての作業良いです。以下のようなもの、

から driver.FindElement(By.Id("btnLogin")).Click();

driver.FindElement(By.Id("btnLogin")).Submit();

ところで、私はこの投稿のすべての答えを試しましたが、私にはうまくいきません。


3

同様の問題が発生しました。ドライバーのコンストラクターでより多くの時間を設定してみてください-たとえばを追加します。

var timespan = TimeSpan.FromMinutes(3);

var driver = new FirefoxDriver(binary, profile, timeSpan);

こんにちは、bewu、それは以下のような形式でしょうか?driver.Manage()。Timeouts()。ImplicitlyWait(TimeSpan.FromSeconds(5));
ネイサン

4
いいえ、この待機ではありませんImplicitlyWaitは要素の検索に関連しています。要求が続行されるのを待つときに、デフォルト(60秒)のドライバータイムアウトを変更する必要があります(私が間違っていない場合)。とにかく、FFドライバーのコンストラクターを設定し、そこに属性を追加するか、タイムアウトを変更する行を見つける必要があります。次のようなもの:driver = new FirefoxDriver(new FirefoxBinary(), new FirefoxProfile(path to your profile), TimeSpan.FromMinutes(3));
Bart Wojtala 2014年

2
ChromeDriverの場合、次のようになりますdriver = new ChromeDriver(service, chromeDriverOptions, TimeSpan.FromMinutes(3));
redwards510 2016年

2

この問題は、後でWebドライバオブジェクトにアクセスしようとしたときに発生すると思います

1)ウィンドウが閉じていて、まだ親に切り替えていません

2)準備が整っておらず、切り替えてから更新されたウィンドウに切り替えました

windowhandles.countが期待どおりになるのを待つことは、ページのコンテンツを考慮せず、document.readyも考慮しません。私はまだこの問題の解決策を探しています


2

私の場合、Chromeの更新フォルダを削除したためです。Chromeを再インストールした後、正常に動作しています。


1

問題はClick()、ビルド環境でのタイムアウトの評価です。何が起こっているのかを掘り下げたいと思うかもしれません。Click()いるの。

また、Click()ネットワークの速度などによっては評価に時間がかかる場合があるため、再試行を追加してみてください。


こんにちは、ブラウザがロックするだけなので、再試行オプションは機能しません。テストを停止するだけで、ブラウザを続行できます。
ネイサン

1

私の場合、このエラーがチームビルドサーバーで発生していることがわかりました。テストはローカルの開発マシンで機能しました。

問題は、ターゲットWebサイトがビルドサーバーで正しく構成されていなかったため、ブラウザーを正しく開くことができなかったことです。

Chromeドライバーを使用していましたが、それが違いを生むかどうかはわかりません。


1

私の場合、問題はSendKeys()とリモートデスクトップにありました。私がこれまでに持っている回避策を投稿する:

vSphereでホストされ、RDPを介して管理されているノードでJenkinsジョブの一部として実行すると失敗するSeleniumテストがありました。いくつかのトラブルシューティングの後、リモートデスクトップが接続されてフォーカスされている場合は成功しますが、リモートデスクトップが切断されているか、最小化されている場合は例外として失敗します。

回避策として、RDPではなくvSphere Consoleを使用してログインしましたが、vSphereを閉じた後でも、テストは失敗しませんでした。これは回避策ですが、RDPを介してログインしないように注意し、常にvSphereコンソールを介してのみ管理する必要があります。



0

ザ・ new FirefoxDriver(binary, profile, timeSpan)廃止されてきました。

これで使用できます new FirefoxDriver(FirefoxDriverService.CreateDefaultService(), FirefoxOptions options, TimeSpan commandTimeout)代わりにになりました。

もあり、new FirefoxDriver(string geckoDriverDirectory, FirefoxOptions options, TimeSpan commandTimeout)動作します。ただし、文書化されていないため、geckoDriverDirectoryすでににある場合でも手動で指定する必要がありますPath


0

同じ問題がありました。私たちの場合、ブラウザはログインポップアップ(Windows認証)によってブロックされていたため、60秒後に戻っていません。Chromeが実行されていたWindowsアカウントに正しいアクセス権を追加すると、問題が解決しました。


0

ああ!今日macOSでこれに直面し、問題は次のように単純でした-新しいAppiumのインストールを提案するポップアップウィンドウバージョンのがリモートCIビルドサーバーに表示されていました。

それにVNCを実行し、[後でインストール]をクリックするだけで修正されました。


0

私の場合、上記の答えのどれも私の問題を完全に解決しませんでした。最終的に(no-sandbox)モード、タイムアウト期間が延長された接続(driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capability, TimeSpan.FromMinutes(3));)、ページの読み込みタイムアウト(driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(30));)を使用したため、コードは次のようになります。

    public IWebDriver GetRemoteChromeDriver(string downloadPath)
    {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.AddArguments(
            "start-maximized",
            "enable-automation",
            "--headless",
            "--no-sandbox", //this is the relevant other arguments came from solving other issues
            "--disable-infobars",
            "--disable-dev-shm-usage",
            "--disable-browser-side-navigation",
            "--disable-gpu",
            "--ignore-certificate-errors");
        capability = chromeOptions.ToCapabilities();

        SetRemoteWebDriver();
        SetImplicitlyWait();
        Thread.Sleep(TimeSpan.FromSeconds(2));
        return driver;
    }
    
    private void SetImplicitlyWait()
    {
        driver.Manage().Timeouts().PageLoad.Add(TimeSpan.FromSeconds(30));
    }


    private void SetRemoteWebDriver()
    {
        driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capability, TimeSpan.FromMinutes(3));
    }

しかし、上記の方法のいずれも私の問題を解決しなかったと述べたように、私は継続的にエラーを受け取り、複数のchromedriver.exeおよびchrome.exeプロセスがアクティブでした(chromedriverの〜10とchromeの〜50)。

どこかで、ドライバーを破棄した後、次のテストを開始する前に数秒待つ必要があることを読んだので、メソッドを破棄するために次の行を追加しました。

    driver?.Quit();
    driver?.Dispose();
    Thread.Sleep(3000);

このスリープの変更により、タイムアウトエラーが発生しなくなり、不必要に開かれたchromedriver.exeおよびchrome.exeプロセスがなくなりました。

私がそうしている限り、この問題に苦しんでいる誰かを助けたことを願っています。


0

Windowsサーバー(無人)でスケジュールされたタスクを使用してヘッドレスChromeDriverを実行しようとしたときに、同じ例外が発生しました。私にとってそれを解決したのは、ユーザー「管理者」としてタスク実行することです(最後のSに注意してください)。私も行ったこと(関連するかどうかはわかりません)は、タスクの[条件]タブから[任意の接続]を選択します。


-1

ChromeDriverの場合、以下が機能しました。

string chromeDriverDirectory = "C:\\temp\\2.37";
 var options = new ChromeOptions();
 options.AddArgument("-no-sandbox");
 driver = new ChromeDriver(chromeDriverDirectory, options, 
 TimeSpan.FromMinutes(2));

Seleniumバージョン3.11、ChromeDriver 2.37

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.