Как увеличить ограничение времени выполнения кода в веб-драйвере Selenium с помощью C# - PullRequest
0 голосов
/ 25 февраля 2020

При загрузке данных с сайта требуется время для загрузки.

Если сайт загружается в течение 60 секунд, то все в порядке. По истечении этого времени он выдает сообщение об ошибке.

На самом деле этот код выполняется только для 60 секций.

this.driver.FindElement(By.CssSelector("#btnLogin")).Click();

Как настроить драйвер на ожидание чтобы этот код был выполнен полностью?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Существует множество вариантов установки времени загрузки страницы.

driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(90);

ИЛИ

driver.Manage().Timeouts().ImplicitWait.Add(System.TimeSpan.FromSeconds(90)); 

ИЛИ

driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(90));

ИЛИ

driver.Manage().Timeouts().AsynchronousJavaScript.Add(90));

Обновлено-1

Вы можете попытаться дождаться присутствия элемента на новой странице (появляется страница после загрузки страницы). Напишите пользовательский метод для поиска элемента с тайм-аутом, как показано ниже:

public static class WebDriverExtensions
{
    public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
    {
        if (timeoutInSeconds > 0)
        {
            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
            return wait.Until(driver => driver.FindElement(by));
        }
        return driver.FindElement(by);
    }
}

Использование вышеуказанного метода:

driver.FindElement(By.CssSelector("#btnLogin"), 90);
0 голосов
/ 25 февраля 2020

Вы можете увеличить время ожидания загрузки страницы сверх 60 секунд (по умолчанию), например, 70 секунд, как показано ниже.

driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(70);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...