Установить возможность на уже работающем веб-драйвере selenium
На этапе проверки селена (например, нажатие кнопки) я хочу, чтобы селен не ожидал завершения загрузки страницы. Я не могу выбросить исключение загрузки, потому что тогда я больше не могу работать со страницей. Можно сделать что-то похожее на это:
DesiredCapabilities dr = DesiredCapabilities.chrome();
dr.setCapability("pageLoadStrategy", "none");
WebDriver driver = new RemoteWebDriver(new URL("...."), dr);
То, что я хочу, это как "dr.setCapability("pageLoadStrategy", "none");" но только на один конкретный шаг.
Кто-нибудь знает способ сделать это?
2 ответа
Возможности больше не редактируются после запуска браузера. Один из способов временного отключения ожидания - реализовать свой собственный get
с инъекцией скрипта.
Что-то вроде этого:
//
// loads the page and stops the loading without exception after 2 sec if
// the page is still loading.
//
load(driver, "https://httpbin.org/delay/10", 2000);
public static void load(WebDriver driver, String url, int timeout) {
((JavascriptExecutor)driver).executeScript(
"var url = arguments[0], timeout = arguments[1];"
"window.setTimeout(function(){window.location.href = url}, 1);" +
"var timer = window.setTimeout(window.stop, timeout);" +
"window.onload = function(){window.clearTimeout(timer)}; "
, url, timeout);
}
Начиная с текущей реализации Selenium, как только мы настроим WebDriver
экземпляр с нашей предполагаемой конфигурацией через DesiredCapabilities
класс и инициализировать WebDriver
сеанс, чтобы открыть браузер, мы не можем изменить возможности времени выполнения.
Стоит упомянуть, что если вы сможете восстановить возможности среды выполнения, вы не сможете изменить их обратно.
Итак, чтобы внести изменения в pageLoadStrategy
Вы должны начать новый WebDriver
сессия.
Вот ясный и краткий ответ @JimEvans (по состоянию на 24 октября '13 в 13:02), связанный с возможностью настройки прокси:
Когда вы устанавливаете прокси для любого данного драйвера, он устанавливается только во время создания сеанса WebDriver; это не может быть изменено во время выполнения. Даже если вы получите возможности созданного сеанса, вы не сможете его изменить. Таким образом, ответ: нет, вы должны начать новый сеанс, если вы хотите использовать другие настройки прокси.