Запуск нескольких тестов nUnit вызывает отсутствие ошибок подключения, но индивидуальный запуск работает (JetBrains Rider)

У меня очень простая структура Selenium С # следующим образом:

using System;
using System.Timers;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ConsoleApplication2
{
    internal class Program
    {
        IWebDriver driver = new ChromeDriver();
        
        public static void Main(string[] args)
        {
            
        }

        [SetUp]
        public void Initialize()
        {
            driver.Navigate().GoToUrl("https://www.google.pt/");
            Console.WriteLine("INITIALIZE complete");
        }
        
        [Test]
        public void TestGoogleSearch()
        {
            IWebElement element = driver.FindElement(By.Name("q"));
            
            element.SendKeys("ivo cunha");
            Console.WriteLine("IVO complete");
        }
        
        [Test]
        public void TestGoogleSearch2()
        {
            IWebElement element = driver.FindElement(By.Name("q"));
            
            element.SendKeys("adam o'brien");
            Console.WriteLine("ADAM complete");
        }
        
        [TearDown]
        public void CleanUp()
        {
            System.Threading.Thread.Sleep(2500);
            driver.Close();
            driver.Quit();
            driver.Dispose();
            Console.WriteLine("CLEANUP complete");
        }
    }
}

Когда я запускаю каждый тестовый образец, каждый проходит. Но если я запустил все тестовые модули (в данном случае только 2), он завершится со следующей ошибкой:

OpenQA.Selenium.WebDriverException: непредвиденная ошибка. System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: не удалось установить соединение, поскольку целевая машина активно отказалась от него 127.0.0.1:57535

Скриншот результатов при запуске всех тестов

Как я могу это исправить, чтобы запустить все тесты в серии?


person Central QA    schedule 07.11.2018    source источник
comment
Похоже, вы пытаетесь подключиться к следующему адресу 127.0.0.1:57535, но он недоступен   -  person OlegI    schedule 07.11.2018
comment
Но почему это работает для первого теста? А потом не проходит второй тест?   -  person Central QA    schedule 07.11.2018


Ответы (1)


Когда вы создаете экземпляр ChromeDriver, он создает сокет, который используется для тестов.

Затем вы используете TearDown, который запускается после каждого теста, поэтому он в основном закрывает соединение после TearDown и не открывает его снова для второго теста.

Итак, вы либо:

  • Закройте ChromeDriver только после завершения всех тестов.
  • Закройте ChromeDriver и создавайте новый экземпляр после каждого теста.

Вот пример со вторым решением

using System;
using System.Timers;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ConsoleApplication2
{
    internal class Program
    {
        IWebDriver driver = null;

        public static void Main(string[] args)
        {

        }

        [SetUp]
        public void Initialize()
        {
            driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://www.google.pt/");
            Console.WriteLine("INITIALIZE complete");
        }

        [Test]
        public void TestGoogleSearch()
        {
            IWebElement element = driver.FindElement(By.Name("q"));

            element.SendKeys("ivo cunha");
            Console.WriteLine("IVO complete");
        }

        [Test]
        public void TestGoogleSearch2()
        {
            IWebElement element = driver.FindElement(By.Name("q"));

            element.SendKeys("adam o'brien");
            Console.WriteLine("ADAM complete");
        }

        [TearDown]
        public void CleanUp()
        {
            System.Threading.Thread.Sleep(2500);
            driver.Close();
            driver.Quit();
            driver.Dispose();
            Console.WriteLine("CLEANUP complete");
        }
    }
}
person Shlomi Bazel    schedule 07.11.2018
comment
Спасибо, Шломи, твое объяснение имеет смысл :) работает. - person Central QA; 07.11.2018