Java Selenium с угловой 5 - PullRequest
       0

Java Selenium с угловой 5

0 голосов
/ 25 апреля 2018

Я пытаюсь работать с Selenium в Java с сайтом на основе Angular 5. Selenium не поддерживает его напрямую, но JavascriptExecutor может помочь в проверке завершения загрузки компонентов страницы.

Проблема в том, что я не знаю, как реализовать JavaScript для проверки этого.

Я использую:

return window.getAngularTestability === undefined

для проверки Angular 5 существует на текущей странице, но следующая часть реализации для меня загадка.

Я знаю, что должен каким-то образом использовать return window.getAngularTestability. 1014 *

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Я нашел ответ после долгих исследований и поиска в Интернете.

Решение не мое, поэтому я не заслуживаю похвалы.

ExpectedCondition<Boolean> expectation = driver -> ((JavascriptExecutor) driver).executeAsyncScript(
            "var callback = arguments[arguments.length - 1];" +
                    "if (document.readyState !== 'complete') {" +
                    "  callback('document not ready');" +
                    "} else {" +
                    "  try {" +
                    "    var testabilities = window.getAllAngularTestabilities();" +
                    "    var count = testabilities.length;" +
                    "    var decrement = function() {" +
                    "      count--;" +
                    "      if (count === 0) {" +
                    "        callback('complete');" +
                    "      }" +
                    "    };" +
                    "    testabilities.forEach(function(testability) {" +
                    "      testability.whenStable(decrement);" +
                    "    });" +
                    "  } catch (err) {" +
                    "    callback(err.message);" +
                    "  }" +
                    "}"
    ).toString().equals("complete");
    try {
        WebDriverWait wait = new WebDriverWait(webDriver(), 15);
        wait.until(expectation);
    } catch (Throwable error) {
        new Exception("Timeout waiting for Page Load Request to complete.");
    }
0 голосов
/ 25 апреля 2018

Вы можете создать общий метод Java для запуска любого JavaScript в вашем коде Java. См. Ниже блок кода: -

 public void executeJavascript(String script) {
        ((JavascriptExecutor) driver).executeScript(script);
    }

Вы можете передать свои return операторы javascript как параметры этому методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...