Невозможно подключиться к удаленному серверу - из-за Driver.Close () и Driver.Quit (), но как это исправить? - PullRequest
0 голосов
/ 29 марта 2019

Я использовал Selenium и NUnit для автоматического тестирования, и до сих пор все было хорошо. Внесенное мной недавно изменение добавило более одного теста в класс тестирования.

Я довольно уверен, что проблема связана с кодом в моей функции "Teardown" в тестовом классе. Когда я комментирую

BrowserFactory.CloseAllDrivers();

Все идет хорошо.

Это код моего "FrontEndAddItemToCartTest":

class FrontEndAddItemToCartTest : PageTest
    {
        [SetUp]
        public void Initialize()
        {
            SetBrowser(BrowserFactory.BrowserType.Chrome); // Not headless
            SetServer("testUrlNotGivenForSecurityPurposes");

            StartTest(TestType.FrontEnd);
            SetSize(MobileSize.XXLarge);
        }

        [Test]
        public void StandardQuantityTest()
        {
            OrderItem standardQuantity = new OrderItem(new Product("500", ".25"), 500);
            FrontEndActions.AddItemToCart(standardQuantity);
        }

        [Test]
        public void CustomQuantityTest()
        {
            OrderItem customQuantity = new OrderItem(new Product("482", ".25"), 225);
            FrontEndActions.AddItemToCart(customQuantity);
        }

        [TearDown]
        public void EndTest()
        {
            BrowserFactory.CloseAllDrivers();
        }
    }

Это ошибка, которую я получаю:

Message: OpenQA.Selenium.WebDriverException : Unexpected error. System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it

с кучей других вещей, которые я не считаю актуальными.

При этом у меня есть код в "SetBrowser (...)", который инициализирует new ChromeDriver(); но этого, кажется, недостаточно.

Существуют методы наверху, чтобы избежать необходимости делать слишком много вещей, похожих на Selenium-y, в каждом из тестов - чтобы сделать вещи более удобными для обслуживания другими людьми, а не только мной, - но это то, что вы ожидаете от обычной установки драйвера , Я не уверен, почему именно второй тест является причиной проблемы, но так как все работает без запуска CloseAllDrivers(), я представляю, что это так.

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

ОК, так что проблема была в комбинации: 1. У меня были Drivers[driver].Close(); и Drivers[driver].Quit(); - только .Quit () разрешил одну проблему.Не совсем уверен, почему Close () вызывал проблемы, если честно.Другое (окно не закрывается должным образом в конце) было вызвано следующим кодом в моем BrowserFactory:

if (driver == null)
{
    Driver = new ChromeDriver((ChromeOptions)options); // options created elsewhere
    Drivers.Add("Chrome", Driver); // This adds the driver to the list of Drivers currently up.
}
else
{
    Driver = new ChromeDriver((ChromeOptions)options); // same as before
    Drivers["Chrome"] = Driver; // **this** wasn't here before. This was the issue. Essentially, I was calling ```Quit()``` on the first instance of the driver, not on the fresh one created by the second test.
}

Спасибо за помощь, ребята.Сочетание меня решило выяснить это, и ваши ответы привели меня к решению:)

0 голосов
/ 29 марта 2019

Судя по атрибутам, вы используете MSTest?Выполняет ли он тесты параллельно?

Я полагаю, что для хорошей изоляции тестов вы бы хотели изменить метод CloseAllDrivers, чтобы утилизировать только драйвер, используемый в тесте, который он очищает.Я бы порекомендовал начать там и посмотреть, есть ли у него такая же проблема.

Кроме того, CloseAllDrivers вызывает driver.Quit () или driver.Dispose ()?Любой из тех, которые вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...