Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

How to ignore ScriptException in HtmlUnitDriver

selenium
webdriver
Теги: #<Tag:0x00007f7b69280ca8> #<Tag:0x00007f7b69280af0>

(GorDi) #1

Коллеги, снова необходима ваша помощ!

Использую HtmlUnitDriver (2.48.2). При переходе на странице падаю с таким исключением:
com.gargoylesoftware.htmlunit.ScriptException.

Гугл сказал что можно выключить “проброс” етого исключения используя:
webClient.getOptions().setThrowExceptionOnScriptError(false);

ВОПРОС:

  1. Есть ли возможность засетить WebClient c отключенной проброской указанного ексепшена в HtmlUnitDriver? (сам копался в коде, ничего подобного не нашел).
  2. Есть ли какой другой способ заблокировать етот ексепшн? (если можно с примером, плз).

И такой вопрос, чисто для общего развития:
Предполагаю, что на каком-то низком уровне любой браузер имеет свою реализацию хттп-клиента, есть ли возможность “достучаться” до него через selenium (ну к примеру просматривать htttp респонсы 200/400).


(GorDi) #2

Кажется есть решение… Додумался сам, так что не знаю на сколько корректное.

Идея:
В классе HtmlUnitDriver имеется приватное поле webClient “добравшись” до которого можно вызвать заветный метод getOptions().setThrowExceptionOnScriptError(false).

Реализация:

public class HtmlUnitDriverExtended extends HtmlUnitDriver {

    public HtmlUnitDriverExtended(BrowserVersion browserVersion, boolean javaScript) {
        super(browserVersion,javaScript);
        getWebClient().getOptions().setThrowExceptionOnScriptError(false);
    }
}

Теперь спокойно используем объект типа HtmlUnitDriverExtended. Все ошибки JS будуе “глушиться” и не мешают рабочему процессу.