t.me/atinfo_chat Telegram группа по автоматизации тестирования

Запуск тестов на VS2019 С# Selenium, при запуске всех валяться тесты

Теги: #<Tag:0x00007f748be95ed8> #<Tag:0x00007f748be95c58> #<Tag:0x00007f748be95b18>

Все тесты по отдельности запускаются нормально, и когда их было 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 и все действия с драйвером выполняются там и больше он не статичен

2 Симпатий