2016-08-30 1 views
8

Ich habe einen Fehler mit Klicks, die schwer zu reproduzieren sind. 1-2/10000 Klicks enden mit OpenQA.Selenium.WebDriverTimeoutException. Es sieht so aus, als ob das Element nicht angeklickt wurde und der Treiber auf eine Reaktion wartet.Selenium WebDriver löst WebDriverTimeoutException auf RemoteWebElement.Click()

Message: timeout: cannot determine loading status 
from timeout: Timed out receiving message from renderer: -0.028 
    (Session info: chrome=52.0.2743.116) 
    (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.3.9600 x86_64) 
Stack trace: 
    at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebElement.Click() 

Manchmal Timeout in Ausnahmemeldung sieht legit (300 Sekunden), aber in den meisten Fällen hat es negativen Wert wie -0,028.

Ich benutze:

Chrome 52.0.2743.116 
Selenium 2.53.1 
ChromeDriver 2.23 (also produces with 2.22) 

Update:

beginne ich diesen Fehler auch auf RemoteNavigator.GoToUrl

Type: OpenQA.Selenium.WebDriverTimeoutException 
Message: timeout: cannot determine loading status 
from timeout: Timed out receiving message from renderer: -0.032 
    (Session info: chrome=52.0.2743.116) 
    (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.3.9600 x86_64) 
Stack trace: 
    at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.set_Url(String value) 
    at OpenQA.Selenium.Remote.RemoteNavigator.GoToUrl(String url) 
+1

Es wäre toll, wenn Sie den Code einfügen. – amitbobade

+0

@amitbobade passiert es in ziemlich vielen Orten, die ich 'IWebElement.Click()' nennen, aber sehr selten und unberechenbar. –

+0

Kühl. Was ist die ChromeDriver-Version? – amitbobade

Antwort

0

dies durch die Reduzierung Grad der Parallelität von meinem Test gelöst auftretende Läufer von 30 bis 10. Es sieht so aus, als würde die übermäßige Verwendung von CPU dazu führen, dass Anfragen aus irgendeinem Grund nicht an die Web-Treiber gelangen.

+0

Hallo - haben Sie diese Einstellung geändert? Ich stehe vor einem ähnlichen Problem –

+0

Hallo, @ Ctrl_Alt_Defeat. Ich benutzte meinen eigenen Test-Runner, um die Ausführung des Webtreibers gleichzeitig zu verwalten, also reduzierte ich den Grad der Parallelität, um das zu beheben, und das funktionierte für mich. Vermutlich ist 'ChromeDriver' nicht dazu gedacht, in stark konkurrierenden Systemen verwendet zu werden. –

0

kleine Spitze in die Selenium Quellcode zeigen, dass jede Aktion auf dem WebElement oder tatsächlich jede Selenium-Wechselwirkung ruft execute(String driverCommand, Map<String, ?> parameters) von RemoteWebDriver class

hervor

Dies wird durch den Befehl CommandExecutorInterface ausführen, die von verschiedenen Treibern implementiert

ChromeDriver auch implementiert diese und Sie diesen Fehler sehen aufgrund eines Fehlers, der sich bewusst Chrom-Team ist und arbeitet. Bitte überprüfen Sie die Fehlerdetails hier.

Die Fehlerquote wurde mit Chromedriver V2.23 kommen aber seine immer noch, aber selten

Bug#1362

Bug#817

Bug#1224

0

Ich fand die Ursache des Problems, zumindest für meinen Fall. Wir führten die Selen-Tests an einer Jenkins-Maschine durch, die einen Proxy-Server verwendete. Dieses Problem trat nur auf, wenn die Protokollierung für Alle aktiviert wurde. Es ist eine bekannte Tatsache, dass websockets nicht mit Proxies arbeiten und chromedriver verwendet websockets, um Browser-Logs abzurufen. Also haben wir den Proxy deaktiviert und das Problem wurde behoben.