Estoy intentando crear una prueba de interfaz de usuario automatizada con selenium en c#. Aquí está mi código:

    driver = new ChromeDriver();
    driver.Manage().Window.Maximize();
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    driver.Navigate().GoToUrl("my_url");
    driver.FindElementById("textBox").Clear();
    driver.FindElementById("textBox").SendKeys("tire");
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
    wait.Until((ExpectedConditions.ElementIsVisible(By.Id("Moto"))));
    driver.FindElementById("Moto").Click();

Antes de usar wait.until, recibía la excepción ElementNotVisibleException, pero ahora obtengo la excepción WebDriverTimeoutException porque el elemento con la identificación "Moto" no es visible.

Aquí hay una captura de pantalla de una parte del DOM:

enter image description here

Entonces, ¿por qué la casilla de verificación de la moto no se encuentra o no está visible?

0
Buda Gavril 15 dic. 2016 a las 15:04

2 respuestas

La mejor respuesta

Pruebe el siguiente código (en Java), ya que funciona al final para la misma estructura:

driver.findElement(By.xpath("//label[@for='Moto']")).click();

No sé por qué causa problemas para encontrar la etiqueta <input> por ID

1
Priyank_Vadi 15 dic. 2016 a las 13:17

Es posible que deba desplazarse hasta el elemento para que sea visible

IWebElement moto = driver.FindElement(By.Id("Moto"));

Actions actions = new Actions(driver);
actions.MoveToElement(moto).Perform();

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Moto"))).Click();
1
Guy 15 dic. 2016 a las 12:21