Все тесты по отдельности запускаются нормально, и когда их было 15-16 тоже всё было норм, теперь их всего 23, но при запуске все, все валяться, в комментариях есть код хуков, если убрать последний AfterScenario где метод Quit(), то всё работает
Message:
OpenQA.Selenium.WebDriverException : Unexpected error. System.Net.WebException: Невозможно соединиться с удаленным сервером —> System.Net.Sockets.SocketException: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 127.0.0.1:49232
в System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
в System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
— Конец трассировки внутреннего стека исключений —
в System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
в System.Net.HttpWebRequest.GetRequestStream()
в OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
в OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
в OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
в OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Вот это сообщение выводиться при ошибке, только 1 тест проходит
А вы в каждом тесте заново создаете драйвер, или один для всех? Если да, то там у них бага, порты “забиваются”, открывайте браузер в каждом тесте. Если тесты хотите запускать пачками, делайте пачки меньше стремитесь делать меньше запросов к драйверу. Например вместо FindElements а затем поиск по тексту/ и еще чему то там, ищите сразу нужный элемент через xpath одним запросом, будет быстрее и меньше запросов к драйверу
Кстати эта тема несколько раз тут поднималась
на счёт забивки всё ок сразу всё ищёт, driver запускается перед каждым тестом и закрывается после каждого, в хуках всё прописал, каждый тест в отдельности идеально работает, как запускаю хоть 2, второй сразу валится, соответсвенно если больше все кроме 1 валяться
а как у вас сейчас выглядит код, где инициализируется и убивается драйвер?
class Hooks
{
private RandomGeneration randomGeneration = new RandomGeneration();
[BeforeScenario]
[Scope(Tag ="Admin")]
public void BeforeScenario()
{
IWebDriver driver = new ChromeDriver();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(20);
ScenarioContext.Current["driver"] = driver;
ScenarioContext.Current["wait"] = wait;
}
[BeforeScenario]
[Scope(Tag ="RandomGen")]
public void RandomWord()
{
GlobalConst.word1 = randomGeneration.GetRandomWord(6);
GlobalConst.word2 = randomGeneration.GetRandomWord(6);
GlobalConst.word3 = randomGeneration.GetRandomWord(6);
GlobalConst.word4 = randomGeneration.GetRandomWord(6);
}
[AfterScenario]
[Scope(Tag ="NeedDeleteCourse")]
public void DeleteAfterScenario()
{
AdminPage adminPage = new AdminPage((IWebDriver)ScenarioContext.Current["driver"]);
adminPage.DeleteButtonForCourseClick(GlobalConst.word1);
adminPage.YesButtonForDeleteCourseClick();
}
[AfterScenario]
public void AfterScenario()
{
Thread.Sleep(1000);
((IWebDriver)ScenarioContext.Current["driver"]).Quit();
}
}
}
вот так, в хуках всё
[AfterScenario] где драйвер убивается - точно вызывается после каждого теста и именно после [AfterScenario] с тегами?
если отметить тэг то только после конкретного, а так да после каждого
[AfterScenario]
[Scope(Tag =“NeedDeleteCourse”)] тут драйвер не убивается
Отрабатывает, оба AfterScenario отрабатываются в том случае, на всякий случай проверил, не помогло
пытался уже не закрывать драйвер, вначале создать его потом использовать driver.Close() тоже не сработало
а тесты парралельно запускаются?
нет последовательно,
[AfterScenario]
[Scope(Tag =“NeedDeleteCourse”)] а без этого сценария будет работать? Чисто для теста
закоментил все AfterScenario получилось так:
1.Все тесты прошли успешно
2. Также как и раньше после первого теста в открывшимся вкладкам отрабатываются только хуки, дальше (степы типа переход по URL и всё дальнейшее не отображается, но тест проходит)
Может попробывать хранить как тут описано
https://docs.specflow.org/projects/specflow/en/latest/Bindings/Context-Injection.html
Вчера вечером решили проблему, ошибка была в том что driver был статичным и когда после его закрытия в первом тесте во втором он пытался достучаться до него снова, и поэтому выдавал ошибку что его больше не существует, сейчас создал новый класс WebDriver и все действия с драйвером выполняются там и больше он не статичен