Почему я не могу управлять веб-драйвером Chrome Selenium при отключении от Интернета [Исключение WebDriver]

#c# #selenium #selenium-webdriver

#c# #selenium #selenium-webdriver

Вопрос:

Я использую веб-драйвер Chrome. Тестирование автоматизации — это не проблема.

Но я также должен протестировать случай исключения. Проблема заключается только в отключении от Интернета.

[предварительное условие]

  1. Запустите мое приложение автоматизации.
  2. Отключите соединение Wi-Fi во время нормальной работы.
  3. Я увидел "ERR_INTERNET_DISCONNECTED" сообщение в браузере Chrome.
  4. Насколько я знаю, произошло через 1 минуту "OpenQA.Selenium.WebDriverException" , время ожидания HTTP-запроса к удаленному веб-драйверу истекло через 60 секунд
  5. Я поймал исключение с помощью try ~ catch, но после этого я не могу управлять веб-драйвером chrome.Я имею в виду, я отправлю команды _driver.Quit() , _driver.Close() , _driver.URL() .. и т.д. Вызовы API не выполняются.

     do {
        try {
          _driver.FindElement(By.XPath(composeXPath)).Click();
          _driver.Navigate().Back();
        } catch (System.Net.WebException e) {
          System.Diagnostics.Debug.WriteLine("[Web Actor]WebException expired");
    
        } catch (OpenQA.Selenium.WebDriverException e) {
          System.Diagnostics.Debug.WriteLine("[Web Actor]WebDriverException");
          _driver.Quit();
        }
      } while (exit_flag == false);
    }
      

Это базовая концепция в webdriver или нормальная работа?
Вы можете легко создать это исключение.
Если вы столкнулись с такой же проблемой, помогите мне.
Перед включением Wi-Fi и перезагрузкой URL-адреса из браузера Chrome я не могу получить доступ
для веб-драйвера Chrome.
Я собираюсь уйти.

Ответ №1:

  protected void disConnectInternet() throws IOException {
    Map map = new HashMap();
    map.put("offline", true);
    map.put("latency", 5);
    map.put("download_throughput", 500);
    map.put("upload_throughput", 1024);


    CommandExecutor executor = ((ChromeDriver)driver).getCommandExecutor();
    Response response = executor.execute(
            new Command(((ChromeDriver)driver).getSessionId(), "setNetworkConditions", ImmutableMap.of("network_conditions", ImmutableMap.copyOf(map))));
}