internet - selenium tutorial
haga clic en el comando en Selenium webdriver no funciona (6)
Acabo de hacer una exportación de mi código IDE de selenio al controlador web de selenio. Descubrí que muchos de los comandos que funcionaban en IDE no funcionaban o que los controladores web de selenio no soportaban nada. Hasta ahora he estado abordando estos problemas uno a la vez que es menos que ideal ...
Actualmente estoy trabajando para descubrir por qué hacer clic en un botón no funciona con el controlador web mientras que anteriormente había funcionado en IDE de selenio. Mi navegador es FF 13 y mi sistema operativo es Ubuntu.
Fragmento de código
WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();
Lo había intentado previamente
driver.findElement(By.name("submit")).click();
sin embargo, la línea anterior también falló. El elemento está siendo seleccionado, sin embargo, no inicia sesión como me gustaría. Encontré otras páginas con problemas similares, pero su problema parecía ser Internet Explorer, no Firefox. Ni siquiera quiero pensar en los problemas que IE me dará en el futuro.
Gracias,
PD Un consejo sobre una mejor forma de migrar de selenio IDE a Selenium Webdriver sin perder todas las pruebas que he escrito podría resolver este problema también.
Consulte aquí https://code.google.com/p/selenium/issues/detail?id=6756 In quid
Abra la configuración de visualización del sistema y asegúrese de que el tamaño de fuente esté configurado en 100%. Funcionó sorprendentemente
Estaba usando Firefox y por alguna razón, no estaba tomando el comando de clic de los últimos 2 meses que estaba funcionando. Mi sensación era hacer uso de sendKeys y esta página resolvió el problema. Ahora estoy usando sendKeys (Keys.Enter)
Gracias por todas las respuestas a todos! Encontré una solución, resulta que no proporcioné suficiente código en mi pregunta.
El problema NO era con la función click () después de todo, sino que estaba relacionado con la autenticación cas utilizada con mi proyecto. En Selenium IDE mi prueba de inicio de sesión ejecutó un comando "abrir" a la siguiente ubicación,
/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security
Eso funciono. Exporté la prueba a Selenium webdriver que naturalmente conservaba esa ubicación. El comando en Selenium Webdriver era,
driver.get(baseUrl + "/cas/login?service=https%1A%2F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security");
Por razones que todavía no he entendido, lo anterior falló. Cuando lo cambié a,
driver.get(baseUrl + "MOREURL/");
El comando de clic de repente comenzó a funcionar ... Editaré esta respuesta si puedo entender por qué exactamente es esto.
Nota: oculté las URL utilizadas anteriormente para proteger el producto de mi empresa.
No hay nada malo con ninguna versión de tu código. Lo que sea que está causando esto, eso no es todo.
¿Has comprobado tres veces tu localizador? Su elemento definitivamente tiene name = submit not id = submit?
Si está seguro de que el elemento está presente, puede intentar esto para simular el clic, si .Click()
no funciona
driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);
o
driver.findElement(By.name("submit")).sendKeys(Keys.ENTER);
Una cosa importante a tener en cuenta es si un botón está habilitado o no. Todavía puede hacer clic en ellos y nada se caerá y el elemento está allí, pero no está listo para hacer clic, por lo que no hace nada.
¡He estado usando webdriver y me ha tomado la mayor parte del día resolver esto!
El siguiente método parece funcionar de manera confiable (¡en mi entorno por un botón!)
private void TryClick(By selector)
{
var wait = WaitUpTo(TimeSpan.FromSeconds(10));
var element = wait.Until(ExpectedConditions.ElementIsVisible((selector)));
//really important bit!
WaitUpTo(TimeSpan.FromSeconds(5))
.Until(d => element.Enabled);
element.Click();
}
lo usas algo así como
TryClick(By.XPath("//button[contains(.//*,''Some Text'')]"));