visual studio pruebas para net instalar example ejemplos automatizadas c# selenium webdriver

c# - studio - selenium.net example



C#Selenium ''ExpectedConditions está obsoleto'' (4)

Cuando se intenta esperar explícitamente a que un elemento se haga visible con ExpectedConditions, Visual Studio me advierte que ahora está obsoleto y que se eliminará de Selenium pronto.

¿Cuál es el método actual / nuevo para lograr el mismo resultado?

var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30)); var element = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("content-section")));


Es muy simple, solo cambia

Wait.Until(ExpectedConditions.ElementIsVisible(By.Id("content-section")));

a

Wait.Until(c => c.FindElement(By.Id("content-section")));


Resolví mi propia pregunta y quería dar la respuesta a cualquier otra persona que se preguntara cómo resolver esto con la última versión de Selenium.

Usando nuget, busque DotNetSeleniumExtras.WaitHelpers, importe ese espacio de nombres a su clase. Ahora puedes hacer esto:

var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30)); var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("content-section")));

Y la advertencia en el IDE se habrá ido.


Si no desea descargar un paquete adicional de nuget, es bastante fácil declarar su propia función (o condición), especialmente utilizando una expresión lamda, por ejemplo

var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30)); var element = wait.Until(condition => { try { var elementToBeDisplayed = driver.FindElement(By.Id("content-section")); return elementToBeDisplayed.Displayed; } catch (StaleElementReferenceException) { return false; } catch (NoSuchElementException) { return false; } });

Esto también es muy versátil, ya que ahora es posible evaluar cualquier tipo de expresión bool.


verifique qué versión de Selenium.Support y Selenium.WebDriver NuGet Package tiene instalada. Tengo el mismo problema ahora con la última versión 3.11.2 y bajé a la versión 3.10.0 y solucioné el problema.