#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
для всех зон.