Selenium ChromeDriver управляет временем ожидания - PullRequest
2 голосов
/ 21 февраля 2020
ChromeOptions options = new ChromeOptions();

options.PageLoadStrategy = PageLoadStrategy.Eager;

string[] options_list = new string[]
{
                "start-maximized",
                "enable-automation",
                //"--headless",
                "--no-sandbox",
                "--disable-infobars",
                "--disable-dev-shm-usage",
                "--disable-gpu",
                "enable-features=NetworkServiceInProcess"
};

options.AddArguments(options_list);

using (IWebDriver driver = new ChromeDriver(options))
{
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(5));

    driver.Navigate().GoToUrl(url);


 wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Name("lgin"))).Click();

 // After lgin clicked
 // Page may load for 3 to 5 minutes due to huge data processing

 wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("Img2"))).Click();
}

Во время ожидания от 3 до 5 минут я всегда получаю сообщение об ошибке исключения ниже.

HTTP-запрос к удаленному серверу WebDriver для URL http://localhost: 50696 / session / b8dbc3609bdb0d779c81886942342b6d / element / 1fc37ce8-a8a0-4a51-84ed-18828edf7b46 / click по истечении 60 секунд.

Я пытался добавить следующие коды:

driver.Manage().Timeouts().PageLoad.Add(TimeSpan.FromMinutes(5));
driver.Manage().Timeouts().ImplicitWait.Add(TimeSpan.FromMinutes(5));
1011, но время ожидания 60 секунд

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Вы пробовали с WebDriverWait

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

Вполне вероятно, что вы столкнулись с этой проблемой: https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/4874

Каждый водитель Класс имеет перегрузку конструктора, которая позволяет вам установить время ожидания для каждой команды. Вот пример для FirefoxDriver для установки времени ожидания команды на 5 минут:

IWebDriver driver = new FirefoxDriver(new FirefoxBinary(), null, TimeSpan.FromMinutes(5));

Вы можете найти похожие перегрузки конструктора для InternetExplorerDriver, ChromeDriver и RemoteWebDriver.

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

попробуйте этот код

 using (IWebDriver driver = new 
 ChromeDriver(options))
{
   Thread.Sleep(8000);    // or higher
   driver.Navigate().GoToUrl(url);        
   driver.FindElement(By.Name("lgin")).Click();
   // Thread.Sleep(8000);    // or higher
   // try this upper line if you need it
   driver.FindElement(By.Id("Img2")).Click();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...