Im испытывает сценарий исключения с использованием chromedriver.exe с некоторыми модульными тестами, которые я пишу с помощью Selenium. Когда выполняется первый тест, использующий хромированный рекордер, браузер запускается и проходит тест.
Однако, для всех следующих тестов, которые используют хромированный реверс, браузер не будет успешно перемещаться по URL-адресу.
Браузер запускается, на мгновение символы данных отображаются в адресной строке (как это было в первом тестировании, который работал), тогда правильный адрес вставляется в адресную строку. Однако страница никогда не загружается, и вы получаете стандартную хром . Эта веб-страница недоступна в теле/холсте браузера с помощью двух кнопок перезагрузить и больше.
Это известная проблема?
Я использую следующие версии:
Селен: 2.41.0.0
Chromedriver.exe: 2.9.0.0
Visual Studio 2013: 12.0.30110.00 Обновление 1
У меня есть следующий Инициализировать метод в классе ChromeTestDriver, который запускается в методе Setup (aka TestInitialize) для всех тестов:
ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(DriverPath);
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = DriverPort; // 9999 - this is the port for the driver, not the webpage
webDriver = new ChromeDriver(chromeDriverService, chromeOptions);
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
У меня есть следующий код в методе очистки (aka Teardown) для всех тестов:
TestDriver.CloseWindow();
TestDriver.Quit();
Исключено следующее исключение:
OpenQA.Selenium.NoSuchWindowException: нет такого окна: целевое окно уже закрыто
Сообщите мне, могу ли я предоставить дополнительную информацию.
Edit Я заметил, что тест IE должен запускаться до того, как Chrome завершится с ошибкой. Как правило, происходит следующее. Тест Chrome работает нормально. Затем запускается тест IE. Вследствие этого все тесты Chrome терпят неудачу.
Дальнейшее редактирование Другим необычным аспектом этого является то, что когда хром был опустошен Selenium для веб-сайта, я больше не могу загружать веб-сайт в Chrome. То есть, если я вручную набираю URL-адрес в адресной строке Chromes, отображается одна и та же пустая страница.
Еще более странно, если я подниму Fiddler2 (который в основном является прокси-сервером), Chrome становится незатронутым. Он работает снова.
Я уверен, что прокси-сервер является проблемой, поскольку моя система не имеет прокси-сервера, и тот же результат возникает, когда Fiddler2 был удален из моей системы.
Симптомы также воспроизводятся моим клиентом, который находится на другом континенте. Мы сотрудничаем с использованием GIT. Поэтому он не ограничивается моей системой.
Пользователь из группы пользователей Selenium Google предложил воспроизвести ошибку, используя webdriver, в действительно простом сценарии (т.е. не как часть структуры тестирования). Вот код для консольного приложения, которое я создал для этого:
private static string Url = "http://localhost:5556";
static void Main(string[] args)
{
var chromeWebDriver = GetChromeWebDriver();
var nav = chromeWebDriver.Navigate();
nav.GoToUrl(Url);
Thread.Sleep(3000);
chromeWebDriver.Quit();
chromeWebDriver.Dispose();
var iedriver = GetIeDriver();
var nav1 = iedriver.Navigate();
nav1.GoToUrl(Url);
iedriver.Quit();
iedriver.Dispose();
var chromeWebDriver2 = GetChromeWebDriver();
var nav2 = chromeWebDriver2.Navigate();
nav2.GoToUrl(Url);
chromeWebDriver2.FindElement(By.LinkText("Login")).Click();
System.Threading.Thread.Sleep(2000);
chromeWebDriver2.Quit();
chromeWebDriver2.Dispose();
Console.ReadLine();
}
private static IWebDriver GetIeDriver()
{
InternetExplorerDriverService internetExplorerDriverService =
InternetExplorerDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.IEDriver.2.41.0.1\content");
InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
internetExplorerDriverService.Port = 9999;
IWebDriver webdriver = new InternetExplorerDriver(internetExplorerDriverService, internetExplorerOptions);
return webdriver;
}
private static IWebDriver GetChromeWebDriver()
{
var chromeDriverService =
ChromeDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.ChromeDriver.2.10.0.0\content");
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = 7777;
IWebDriver chromeWebDriver = new ChromeDriver(chromeDriverService, chromeOptions);
return chromeWebDriver;
}