выполнить javaScipt на Selenium WebDriver перед get () на java - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь получить доступ к веб-странице, используя селен в Java. Проблема в том, что сайт выдает ошибку Exception in thread "main" org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "require" is not defined.
Я спросил разработчика переднего конца и сказал мне, что я должен попытаться загрузить javascript перед загрузкой страницы. Сценарий, который он упомянул: require.js и я нашел его в https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.js

Я использую htmlunit-driver 2.28 Я заметил, что когда я инициализирую драйвер как
HtmlUnitDriver driver =new HtmlUnitDriver(true);
Я получаю опцию
driver.executeScript(script, args)
который недоступен на WebDriver driver =new HtmlUnitDriver(true);
Я думаю, что могу обойти это (так как мой код находится в производстве для других проектов, использующих WebDriver) и использовать HtmlUnitDriver, но я не знаю, как использовать executeScript, чтобы передать URL для сценария

Как я могу внедрить это в мой WebDriver? Спасибо

1 Ответ

1 голос
/ 10 июля 2019

Вы должны немного настроить WebClient, используемый HtmlUnitDriver.По умолчанию опция throwExceptionOnScriptError имеет значение true.Но все браузеры игнорируют обработку javascrip, если возникает (необработанное) исключение.Если я правильно понял, ваша страница выдает это исключение также при работе с реальным браузером;означает, что вам нужно

  1. с помощью throwExceptionOnScriptError
  2. поговорить с разработчиком page / js о качестве кода

Пример кода:

WebDriver driver = new HtmlUnitDriver(true) {
    @Override
    protected WebClient modifyWebClient(WebClient client) {
        client.getOptions().setThrowExceptionOnScriptError(false);
        return client;
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...