Запуск тестов selenium в IE 11 в Windows 10 1809 — новые окна не открываются

#javascript #selenium #selenium-webdriver #ava

#javascript #selenium #selenium-webdriver #ava

Вопрос:

На моей тестовой машине я могу запустить свой тест, но после того, как несколько окон Internet Explorer открываются и закрываются тестом, новые windwos больше не открываются. Я не получаю сообщение об ошибке, и тест застрял.

Я проверил все настройки в соответствии с selenium wiki.

Если я использую chromedriver для запуска тестов в Chrome, все проходит гладко.

Используемый код выглядит следующим образом:

 var { Builder, By, Key, until, Capabilities } = require("selenium-webdriver");
var ieCapabilities = Capabilities.ie();
var driver = await new Builder().withCapabilities(ieCapabilities).build();
await driver.manage().setTimeouts({ implicit: 3000, pageLoad: 3000, script: 3000 })
await driver.manage().window().setRect({ height: this.initialHeight, width: this.initialWidth });
await driver.get("http://localhost/");
// do the tests
await driver.quit();
  

Код выполняется внутри теста ava. Чтобы избежать проблем, я временно установил значение concurrency 1 и выполнил все тесты serial , но проблема все еще возникает.

Как мне выполнить тест до конца?

Ответ №1:

Было несколько проблем, из-за которых тесты зависали:

Время ожидания для wait -вызовов

Из-за того, что в IE поведение немного отличается, пропущенные таймауты привели к зависанию тестов.

Неправильный код:

 await driver.wait(until.stalenessOf(elementSelectMenu));
  

Правильный код:

 await driver.wait(until.stalenessOf(elementSelectMenu), 6000);
  

Отсутствующие await операторы

Это никогда не было проблемой в firefox или chorme, но приводило к сбою IE.

Код, который вызвал проблемы:

 driver.findElement([...]).click();
  

Правильный код:

 await driver.findElement([...]).click();
  

Проблемы с использованием selenium на веб-сайтах TLS (https)

Некоторые тесты должны были проверять данные на веб-сайтах с использованием TLS. В IE тесты выдали ошибку.

Обходной путь был отключен protected mode для всех зон.