¿Cómo puedo probar qué elemento tiene el foco en Selenium RC?¿Cómo pruebo qué elemento tiene el foco en Selenium RC?
Respuesta
no pude conseguir la idea :focus
pseudoclass a trabajar, no sé por qué - la focalización css=#search_input input.text
igualado, pero css=#search_input input.text:focus
no lo hizo? Pero aquí es lo que funcionó para mí:
self.assertEquals(self.se.get_element_index('dom=document.activeElement'),
self.se.get_element_index('//input[@id="search-query"]'))
Se trata de utilizar la Python Selenium API, por lo que las llamadas son get_element_index()
envolturas alrededor de la lista de comandos selenio núcleo. Adapta esto a tu entorno. Está evaluando el índice de elemento del elemento centrado del documento (obtenido con un localizador Javascript DOM) y el índice de elementos del elemento que desea probar para el enfoque (obtenido con un localizador XPath). También vea this question.
Puede utilizar selectores CSS en la prestación de un localizador de elemento de Selenio: http://release.seleniumhq.org/selenium-core/1.0/reference.html#locators
Por lo tanto, se puede utilizar la pseudo-clase :focus
CSS en su selector sólo para igualar si el elemento está enfocado.
Combina eso con una acción verifyElementPresent
y un objetivo de algo como lo siguiente: css=.yourclassname:focus
. Reemplace yourclassname
con su nombre de clase de CSS, por supuesto, o use uno de los otros selectores de CSS; el bit importante es el :focus
al final.
Tenga en cuenta que esto seguramente no funcionará en el plugin de Selenium IDE Firefox. Me imagino que es porque este complemento tendrá foco en su lugar. No pude hacer que funcionara en el IDE (la prueba siempre falló), pero funcionó bien una vez que lo exporté y lo ejecuté como una prueba de Java.
HTH
Sam
Estoy marcando esto como la respuesta, ya que debe funcionar, pero no pude hacer que funcionara para mí. Estoy usando selenium RC, puedo ver que el elemento está enfocado (porque agregué un *: focus {background: pink} a mi css), pero isElementPresent siempre devuelve false. – hwiechers
He encontrado la solución a este problema y he desarrollado una secuencia de comandos simple para solucionar este problema al ejecutar las pruebas. El problema radica en que los selectores de búsqueda y coincidencia nativos de su navegador son conscientes del sistema operativo, lo que significa que a menos que su navegador y la pestaña de la página web tengan el foco dentro del sistema operativo, el selector de enfoque no coincidirá con CUALQUIER elemento dentro de su documento. He hurgado dentro de JQuery para encontrar una forma de solucionarlo, y esto se puede hacer simplemente forzando a JQuery a utilizar Sizzle y no optimizar las consultas de selector utilizando las funciones nativas del navegador.
Si incluye el siguiente script https://gist.github.com/1166821 ANTES de incluir JQuery, sus pruebas de Selenium superarán las pruebas de: focus.
Para una escritura completa de la cuestión, la solución y la forma de ejecutar las pruebas, por favor revise http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or
la esperanza de que ayude a otras personas que tienen este mismo problema.
Ninguna de las otras respuestas funcionó para mí, por varias razones cuando tuve el mismo problema. Terminé haciendo lo siguiente (con Selenium 2.0 WebDriver, en Java).
WebDriver driver = new FirefoxDriver();
String elScript = "return document.activeElement;";
// Note that the executeScript call returns a WebElement,
// so you can do quite a lot with the result.
WebElement focuseedEl = (WebElement) ((JavascriptExecutor) driver).executeScript(elScript);
El comentario aclara un punto de confusión que tenía: executescript vuelve cosas diferentes en función de lo que le dices a ejecutar, lo que podría ser bastante complicado.
+1 - Funcionó muy bien! – JOpuckman
- 1. Selenium IDE: ¿Cómo verificar si un elemento tiene un foco?
- 2. Selenium RC Tiene problemas con XPath
- 3. ¿Cómo averiguo qué elemento de GWT tiene foco?
- 4. ¿Cómo pruebo los diálogos modales con Selenium?
- 5. ¿Cómo ejecutar Google Chrome con Selenium RC?
- 6. ¿Es posible ocultar el navegador en Selenium RC?
- 7. Descubriendo qué control tiene foco
- 8. Selenium RC: cómo hacer clic en un elemento presente en la columna de una tabla
- 9. wxPython: ¿Cómo averiguo qué widget tiene el foco?
- 10. Cómo averiguar qué objeto tiene actualmente el foco
- 11. Selenium RC: Cómo iniciar pruebas interactivas con varios navegadores
- 12. Lista de lanzadores Selenium RC Browser
- 13. Selenium-rc: ¿Cómo se usa CaptureNetworkTraffic en python
- 14. Selenium 2 - Cambiando el foco a un marco que no tiene nombre/identificación
- 15. ¿Cómo usar xpath en Selenium RC con JavaScript?
- 16. C#: Detectando qué aplicación tiene foco
- 17. ¿Selenium RC es compatible con IE8?
- 18. ¿Cómo determinar qué control en la forma tiene foco?
- 19. Diferencia entre Selenium RC y WebDriver
- 20. Cómo establecer qué control tiene foco en Inicio de aplicación
- 21. ¿Cómo establece programáticamente el foco en SelectedItem en un WPF ListBox que ya tiene foco?
- 22. ¿Cómo averiguo qué control tiene foco en .NET Windows Forms?
- 23. Selenium RC> cómo cargar un archivo usando attachFile()
- 24. Simular evento de pulsación de tecla TAB en Selenium RC
- 25. ¿Cómo saber qué ventana tiene foco y cómo cambiarla?
- 26. jQuery: perder el foco en el elemento
- 27. Selenium RC: ejecutar pruebas en navegadores múltiples automáticamente
- 28. Deshabilitar el foco del elemento en ListView
- 29. Comprobación para ver si un elemento DOM tiene foco
- 30. Diferencia entre isElementPresent e isVisible en Selenium RC
Desafortunadamente get_element_index solo obtiene el índice del elemento dentro de su primario. Entonces, si tiene, por ejemplo, dos divisiones A y B, cada una de las cuales contiene un campo de texto como único elemento secundario, entonces si se selecciona el cuadro de texto A, ambas llamadas get_element_index en su código de ejemplo devolverán 0, por lo que obtendrá un resultado falso positivo. –