Używam Selenium od wielu miesięcy, którego używamy do automatyzacji niektórych naszych wewnętrznych procesów testowych. Skrypty przeszły pomyślnie. Niedawno zaktualizowałem webdriver do C # 2.40.0 przy użyciu FF 27.01 i teraz nasze skrypty zawodzą w losowych miejscach z następującym błędem.
[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)
Ostatni błąd, który udało mi się wyśledzić w jednej linii kodu:
_setup.driver.FindElement(By.XPath("//button[@class='buttonSmall lockBookingButton']")).Click();
Irytujące jest to, że próba rozwiązania problemu okazuje się trudna, tak jakbym uruchomił test na mojej lokalnej maszynie, a debugowanie kończy się pomyślnie. Dodatkowo, jeśli uruchomię go za pośrednictwem NUNIT runner na maszynie budującej, uruchamiam test, również kończy się pomyślnie. Wydaje się, że zawodzi tylko jako część naszego automatycznego procesu uruchamiania kompilacji podczas korzystania z Teamcity. Jak powiedziałem, działało to dobrze od miesięcy, a jedyną rzeczą, która się zmieniła, jest zestaw selenowy webdriver.
Doświadczyłem tego problemu już wcześniej, podczas debugowania, a gdy wywołano Click()
wiersz kodu, Firefox zawiesił się i tylko zatrzymanie testu umożliwiło kontynuację programu. Jest tu kilka sugestii, w tym modyfikacja źródła webdriver? Chciałbym nie podążać tą drogą, jeśli to możliwe, jeśli ktoś inny może zaproponować jakieś sugestie.