Как взаимодействовать с webelement во всплывающем окне во время работы загрузчика браузера? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть всплывающее окно аутентификации перед загрузкой веб-сайта, и когда всплывающее окно отображается на веб-странице, а в браузере работает загрузчик, это означает, что веб-страница загружена не полностью.И согласно селену, если полная веб-страница не загружена изначально, селен не взаимодействует с элементами

Нужна помощь в этом.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете подождать, пока страница полностью загрузится с помощью JavaScript.

private void WaitUntilLoaded()
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until((x) =>
{
    return ((IJavaScriptExecutor)this.driver)
    .ExecuteScript("return document.readyState").Equals("complete");
});
}

Другой вариант - подождать, пока на странице не появится определенный элемент (ы)

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(
By.XPath("some Xpath")));

Источник здесь: https://www.automatetheplanet.com/advanced-webdriver-tips-tricks-part-1/

0 голосов
/ 27 февраля 2019

Используйте следующий метод с Java + Selenium:

public boolean  isPageReady(WebDriver driver){
   boolean readyStateComplete = false;
    while (!readyStateComplete){
        JavascriptExecutor executor = (JavascriptExecutor) driver;
        readyStateComplete = executor.executeScript("return document.readyState") == "complete";
    }
    return  readyStateComplete;
}

Для C # + Selenium :

private void WaitUntilDocumentIsReady(TimeSpan timeout){
    var javaScriptExecutor = WebDriver as IJavaScriptExecutor;
    var wait = new WebDriverWait(WebDriver, timeout);

    // Check if document is ready
    Func<IWebDriver, bool> readyCondition = webDriver => javaScriptExecutor
            .ExecuteScript("return (document.readyState == 'complete' && jQuery.active == 0)");
    wait.Until(readyCondition);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...