wake-up-neo.com

Selenium-Fehler - Die HTTP-Anforderung an den Remote-WebDriver trat nach 60 Sekunden ab

Ich verwende Selenium seit einigen Monaten, um einige unserer internen Testprozesse zu automatisieren. Die Skripte wurden bestanden. Ich habe kürzlich ein Upgrade auf einen C # 2.40.0-Web-Treiber mit FF 27.01 durchgeführt, und unsere Skripts schlagen jetzt an zufälligen Stellen mit dem folgenden Fehler aus. 

[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)

Der letzte Fehler, den ich bis zu einer einzelnen Codezeile gefunden habe:

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

Das Ärgerliche ist, das Problem zu lösen ist schwierig, als würde ich den Test auf meinem lokalen Rechner ausführen und im Debugging bestehen. Wenn ich es über den NUNIT-Läufer auf der Build-Maschine ausführe, läuft der Test ebenfalls ab. Es scheint nur als Teil unseres automatisierten Build-Prozesses zu funktionieren, wenn Teamcity verwendet wird. Wie ich bereits sagte, läuft das schon seit Monaten in Ordnung, und das einzige, was sich geändert hat, ist das Selenium Webdriver-Kit. 

Ich habe dieses Problem bereits während des Debuggens erlebt, und als eine Click()-Codezeile aufgerufen wurde, schien Firefox zu blockieren, und nur wenn der Test abgebrochen wurde, konnte Firefox fortfahren. Hier gibt es eine Reihe von Vorschlägen, einschließlich der Änderung der Quelle des Webtreibers. Ich möchte diesen Weg möglichst nicht einschlagen, wenn jemand andere Vorschläge machen kann.

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

Starten Sie Ihren Browser mit den obigen Codezeilen. Es hat für mich funktioniert.

16
user2298124

Ich hatte ein ähnliches Problem mit dem Chrome-Treiber (Version 2.23)/beim Ausführen der Tests durch TeamCity. Ich konnte das Problem beheben, indem ich den Chrome-Optionen das Kennzeichen "keine Sandbox" hinzufügte:

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

Ich bin mir nicht sicher, ob es eine ähnliche Option für den FF-Treiber gibt. Soweit ich weiß, hat das Problem etwas damit zu tun, dass TeamCity Selenium unter dem SYSTEM-Konto ausführt.

15
combatc2

Ich habe dieses Problem zum ersten Mal vor Monaten angetroffen (auch beim Befehl click()), und seitdem ist es ein Problem für mich. Es scheint ein Problem mit den .NET-Selenium-Bindungen zu sein. Dieser Blogbeitrag desjenigen, der mit dem IE - Treiber arbeitet, ist hilfreich, um zu erklären, was passiert:

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

Leider scheint es keine echte Lösung für dieses Problem zu geben. Immer wenn dieses Problem bei den Selenium-Entwicklern angesprochen wurde ( siehe hier ), handelt es sich um eine typische Antwort :

Wir brauchen ein reproduzierbares Szenario, das eine Musterseite oder einen Link zu einer öffentlichen Website enthalten muss, auf der das Problem reproduziert werden kann.

Wenn Sie in der Lage sind, einen durchgängig reproduzierbaren Testfall einzureichen, kann dies sehr hilfreich sein, um diesen Fehler endgültig zu beenden.

Das heißt, vielleicht können Sie diesen Workaround in der Zwischenzeit ausprobieren. Wenn die HTML - Schaltfläche, mit der Sie click() versuchen, ein onclick - Attribut enthält, das Javascript enthält, sollten Sie einen JavascriptExecutor verwenden, um diesen Code direkt auszuführen, anstatt den Befehl click() aufzurufen. Ich habe festgestellt, dass die Ausführung von onclick Javascript einige meiner Tests direkt erlaubt.

12
Daniel Charles

In meinem Fall ist der Typ meines Buttons submit nicht button und ich ändere den Click in Sumbit, dann funktioniert alles. Sowas wie unten,

von driver.FindElement(By.Id("btnLogin")).Click();

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

BTW, ich habe alle Antworten in diesem Beitrag ausprobiert, aber nicht für mich arbeiten.

3
MichaelMao

Ich habe ein ähnliches Problem. Versuchen Sie, mehr Zeit im Konstruktor des Treibers einzustellen - fügen Sie z. 

var timespan = TimeSpan.FromMinutes(3);

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

In meinem Fall liegt es daran, dass ich den Chrome-Updateordner gelöscht habe. Nach der Neuinstallation von Chrom funktioniert es einwandfrei.

2
gary.zhang

Ich denke, dieses Problem tritt auf, wenn Sie nachher versuchen, auf Ihr Webtreiberobjekt zuzugreifen

1) ein Fenster wurde geschlossen und Sie haben noch nicht zum übergeordneten Element gewechselt 

2) Sie haben zu einem Fenster gewechselt, das nicht ganz fertig war und seit dem Umschalten aktualisiert wurde

wenn Sie darauf warten, dass der windowhandles.count das ist, was Sie erwarten, wird weder der Seiteninhalt berücksichtigt noch document.ready. Ich suche immer noch nach einer Lösung für dieses Problem

1
ribbo

Das Problem ist, dass die Auswertung von Click() in Ihrer Build-Umgebung eine Zeitüberschreitung aufweist. Vielleicht möchten Sie untersuchen, was in Click() passiert.

Versuchen Sie auch, Wiederholungen für die Funktion Click() hinzuzufügen, da die Auswertungen abhängig von der Netzwerkgeschwindigkeit usw. Gelegentlich länger dauern

1
bit

das Ändern des Selenium.WebDriver.ChromeDriver von 2.40.0 auf 2.27.0 ist für mich in Ordnung

0
john liao

In meinem Fall war das Problem mit SendKeys () und Remote Desktop . Posten der Problemumgehung, die ich bisher habe:

Ich hatte einen Selenium-Test, der fehlschlug, wenn er im Rahmen eines Jenkins-Jobs auf einem in vSphere gehosteten und über RDP verwalteten Knoten ausgeführt wurde. Nach einiger Fehlerbehebung stellte sich heraus, dass Remotedesktop erfolgreich verbunden und fokussiert ist, jedoch mit der Ausnahme fehlschlägt, dass Remotedesktop getrennt oder sogar minimiert ist.

Als Problemumgehung habe ich mich über die vSphere-Konsole anstelle von RDP angemeldet und der Test ist auch nach dem Schließen von vSphere nicht mehr fehlgeschlagen. Dies ist eine Problemumgehung, aber ich muss vorsichtig sein, um mich niemals über RDP anzumelden und immer nur über die vSphere-Konsole zu verwalten.

0
sashoalm

Wir hatten das gleiche Problem. In unserem Fall wurde der Browser durch ein Anmelde-Popup (Windows-Authentifizierung) blockiert und kehrte nach 60 Sekunden nicht zurück. Das Hinzufügen der korrekten Zugriffsrechte zum Windows-Konto Chrome wurde ausgeführt, unter dem das Problem behoben wurde.

In meinem Fall habe ich festgestellt, dass dieser Fehler beim Build-Server unserer Teams aufgetreten ist. Die Tests funktionierten auf unseren lokalen Entwicklungsmaschinen.

Das Problem bestand darin, dass die Zielwebsite auf dem Build-Server nicht ordnungsgemäß konfiguriert wurde, sodass der Browser nicht ordnungsgemäß geöffnet werden konnte.

Wir haben den Chrome-Treiber verwendet, aber ich bin mir nicht sicher, ob das einen Unterschied macht.

0
Sean Tomlins

Die new FirefoxDriver(binary, profile, timeSpan) ist veraltet.

Sie können jetzt stattdessen new FirefoxDriver(FirefoxDriverService.CreateDefaultService(), FirefoxOptions options, TimeSpan commandTimeout) verwenden.

Es gibt auch eine new FirefoxDriver(string geckoDriverDirectory, FirefoxOptions options, TimeSpan commandTimeout) und es funktioniert. Aber es ist nicht dokumentiert und Sie müssen geckoDriverDirectory manuell angeben, obwohl es bereits in Path enthalten ist.

0
imba-tjd