script - PHPUnit Selenium, la función ClickAndWait() no funciona en Opera
selenium script (4)
Después de hacer clic en algo emergente o crear, solo necesita llamar a la función "waitForElementPresent" o "waitForChange".
clickAndWait = click () + alguna función de espera ... se usa una buena práctica la función de espera antes de hacer clic, que lo guarda en llamadas asíncronas.
selenium.waitForElementPresent(“myFooElement”);
selenium.click(“myFooElement”);
Tengo un problema con PHPUnit_Selenium
en Opera. Si he hecho clic en el elemento en mi código de prueba, la página no se cargará. En otros navegadores como Firefox, IE, Chrome y Safari, funciona correctamente.
Código:
$browser->clickAndWait(link);
Son los próximos pasos de SELENIUM CONTROL REMOTO:
click(link)
waitForPageToLoad(120000)
Después del tiempo de espera, si hago clic en el enlace en el navegador, la página se vuelve a cargar.
Tengo Selenium RC v. 2.31.0 y Opera versión 12.41, pero también pruebo en Opera 11.50.
¿Tienes alguna idea de lo que está mal?
Estaba teniendo este problema en FF también, esta fue la solución que se me ocurrió:
def wait_for_element_by_id(eid):
"Wait for an element to be present"
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, eid))
)
return []
No había suficiente información en la publicación original para sugerir una solución definitiva, pero vincularla con el comentario @Andre que proporcionan los navegadores "desinfectantes" y, a su vez, proporcionar funciones como "Copiar xPath" puede ser muy engañoso, y provocar muchos problemas durante las pruebas, según la estructura de xPath.
Por ejemplo:
<html>
<head></head>
<body>
<div>
<table>
<tr>
<td>test</td>
</tr>
<tr>
<td>value</td>
</tr>
</table>
</div>
</body>
</html>
Si bien el código anterior es muy mínimo, los navegadores informarán el xPath de la prueba como uno de los siguientes:
- / html / body / div / table / tr / td (que en muchos casos devolverá tanto la prueba como el valor)
- / html / body / div / table / tr [1] / td [1] (una coincidencia más precisa con la prueba)
- / html / body / div / table / tbody / tr / td (observe el tbody agregado)
Y así. Obviamente, no se encuentra con este problema con un identificador más único disponible (por ejemplo, una ID -> // * [@ id = "someElement"]), pero en muchos proyectos hemos asumido el control, donde las pruebas de unidad eran originalmente solo en un navegador, hemos visto errores similares a los reportados, y resultó que los navegadores "desinfectantes" crean uno de dos problemas:
- La ruta se recuperó en un navegador que "desinfectó" y luego se ejecutó en un navegador que no podría encontrar el elemento.
- La ruta se recuperó en un navegador que no se "desinfectar", y luego se ejecuta en un navegador que desinfecta.
Ambos problemas dan como resultado una falta de coincidencia.
Tuve un problema similar y, desafortunadamente, la única solución que se me ocurrió fue ... agregar ''dormir''. Feo, pero funciona