haga clic en el comando en selenium webdriver no funciona


Recientemente he hecho una exportación de mi código IDE selenium a selenium web driver. He encontrado que muchos de los comandos que funcionaban en IDE no funcionan o selenium web driver afirma no ser compatible en absoluto. Hasta ahora he estado abordando estos temas uno a la vez, lo cual es menos que ideal...

Actualmente estoy trabajando en averiguar por qué hacer clic en un botón no funciona con el controlador web, mientras que anteriormente había trabajado en selenium IDE. Mi navegador es FF 13 y mi sistema operativo es Ubuntu.

Fragmento de código

WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();

Yo había intentado anteriormente

driver.findElement(By.name("submit")).click();

Sin embargo, la línea anterior también falló. El elemento está siendo seleccionado, sin embargo, no nos inicia sesión como me gustaría. Encontré otras páginas con problemas similares, pero su problema parecía ser con Internet Explorer no Firefox. Ni siquiera quiero pensar en los problemas que IE me dará en el futuro.

Gracias,

P.d. Un consejo sobre una mejor manera de migrar de selenio IDE a Selenio Webdriver sin perder todas las pruebas que he escrito podría resolver este problema.

Author: OrwellHindenberg, 2012-07-26

6 answers

Si está seguro de que el elemento está presente, puede probar 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);
 71
Author: TheLifeOfSteve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-16 05:41:12

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 ser pulsado, así que simplemente no hace nada.

He estado usando webdriver y su me tomó la mayor parte del día para averiguar esto!

El siguiente método parece funcionar de forma fiable (en mi entorno para 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')]"));
 5
Author: Jonny Leeds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-27 17:29:56

Gracias por todas las respuestas a todos! He encontrado una solución, resulta que no proporcioné suficiente código en mi pregunta.

El problema era NO con la función click() después de todo, sino relacionado con la autenticación cas utilizada con mi proyecto. En Selenium IDE mi prueba de inicio de sesión ejecutó un comando "open" en la siguiente ubicación,

/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security

Eso funcionó. Exporté la prueba a Selenium webdriver que naturalmente preservó 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 tengo que entender lo anterior falló. Cuando lo cambié a

driver.get(baseUrl + "MOREURL/");

El comando click de repente comenzó a funcionar... Editaré esta respuesta si puedo averiguar por qué es exactamente esto.

Nota: Oculté las URL utilizadas anteriormente para proteger el producto de mi empresa.

 2
Author: OrwellHindenberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-09 21:41:36

Por favor refiérase aquí https://code.google.com/p/selenium/issues/detail?id=6756 In crux

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

 2
Author: Nishant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-24 09:10:18

No hay nada malo con ninguna de las versiones de su código. Lo que sea que esté causando esto, no es eso.

¿Has comprobado tres veces tu localizador? Su elemento definitivamente tiene nombre = enviar no id = enviar?

 1
Author: el roso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-27 06:14:04

Estaba usando Firefox y por alguna razón, no estaba tomando el comando click, aunque desde los últimos 2 meses estaba funcionando. Mi sensación era hacer uso de SendKeys y esta página resolvió el problema. Ahora estoy usando SendKeys (Llaves.Enter)

 1
Author: user2743318,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-03 14:01:44