down - Selenium WebDriver-Cómo configurar el tiempo de carga de la página usando C#
selenium webdriver python (6)
Estoy usando Selenium 2.20 WebDriver para crear y administrar un navegador Firefox con C #. Para visitar una página, utilizo el siguiente código, estableciendo los tiempos de espera del controlador antes de visitar la URL:
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); // Set implicit wait timeouts to 5 secs
driver.Manage().Timeouts().SetScriptTimeout(new TimeSpan(0, 0, 0, 5)); // Set script timeouts to 5 secs
driver.Navigate().GoToUrl(myUrl); // Goto page url
El problema es que a veces las páginas tardan una eternidad en cargarse, y parece que el tiempo de espera predeterminado para que una página se cargue usando el Selenium WebDriver es de 30 segundos, lo que es demasiado largo. Y no creo que los tiempos de espera que estoy configurando se apliquen a la carga de una página usando el método GoToUrl ().
Así que estoy tratando de encontrar la forma de establecer un tiempo de espera para cargar una página, sin embargo, no puedo encontrar ninguna propiedad o método que realmente funcione. El tiempo de espera predeterminado de 30 segundos también parece aplicarse a cuando hago clic en un elemento.
¿Hay alguna manera de configurar el tiempo de espera de carga de la página en un valor específico para que cuando llame al método GoToUrl () solo espere mi tiempo especificado antes de continuar?
A partir de 2018: además de estos:
driver.Manage().Timeouts().ImplicitWait.Add(System.TimeSpan.FromSeconds(5));
driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(5));
driver.Manage().Timeouts().AsynchronousJavaScript.Add(timespan));
espere a buscar un artículo, cargar una página y esperar el guión, respectivamente. Ahi esta:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
Con esto, deberías poder declarar una espera explícitamente.
WebDriverWait wait = new WebDriverWait(browser, new TimeSpan(time in seconds));
wait.until(Your condition)
también podría cambiar el tiempo de espera implícito
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
Creo que esa es la sintaxis en C #. (no estoy seguro)
En ruby es
@driver.manage.timeouts.implicit_wait = 30
@wait = Selenium::WebDriver::Wait.new(:timeout => 30)
En caso de que esto ayude a cualquiera que aún esté buscando la respuesta a esto, la API C # WebDriver ahora contiene el método apropiado.
driver.Manage().Timeouts().SetPageLoadTimeout(timespan)
Los tiempos de espera de carga de página aún no están implementados en los enlaces .NET. Con suerte lo serán pronto.
encontré la solución este este problema. Al crear un nuevo FirefoxDriver, hay sobrecargas en el constructor que le permiten especificar un tiempo de espera de comando que es el tiempo máximo para esperar cada comando, y parece estar funcionando cuando se llama al método GoToUrl ():
driver = new FirefoxDriver(new FirefoxBinary(), profile, new TimeSpan(0, 0, 0, timeoutSeconds));
enlace a la documentación del constructor FirefoxDriver para referencia: http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/M_OpenQA_Selenium_Firefox_FirefoxDriver__ctor_2.htm
Espero que esto ayude a alguien más que se encuentre con este problema.
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
Nota: driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(5))
ahora está en desuso.