test - ¿Dónde diablos está la documentación de Selenium 2 para PHPUnit?
software testing php (3)
Acabo de pasar por el mismo proceso y escribí este artículo como una referencia para mí y para otros:
http://scipilot.org/blog/2013/06/30/re-learning-unit-testing-selenium-2-phpunit-selenium/
Sin embargo, parece que ya has respondido a la mayoría de mis descubrimientos, ¡pero al menos te sentirás menos solo en tu frustración!
Estoy teniendo un tiempo frustrante tratando de encontrar cualquier información en Selenium 2 para PHPUnit, excepto el código fuente y las pruebas que puedo "revisar" para "resolver". El favorito de todos parece ser
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
... ¿pero seguramente no tengo que buscar en cientos de líneas de fuentes para obtener respuestas a preguntas simples? ¿Dónde puedo encontrar una guía para principiantes, documentación básica o cualquier cosa?
Ah-ha llegado el momento. Publicaremos para la próxima pobre alma vagando en estos desolados campos de confusión.
Cuando Selenium dice "Selenium 2", les gusta decir "Selenium 2 = Selenium server + WebDriver".
El truco para la persona de PHPUnit es la parte WebDriver, que no está del todo en PHPUnit. Selenium ha escrito los WebDrivers en algunos otros idiomas, y hay terceros para PHP que no he probado ya que estoy apuntando a PHPUnit por ahora. El WebDriver es básicamente una forma de correr en el DOM y capturar elementos. Tiene un buen resumen en http://docs.seleniumhq.org/docs/03_webdriver.jsp .
Cuando PHPUnit dice "Selenium 2", quieren decir que han escrito clases que hacen la mayoría de las cosas en un WebDriver, pero no lo llaman WebDriver, lo llaman Selenium 2.
Debido a la versión de fabricación casera de PHPUnit, sus métodos se denominan un poco diferente a las versiones de Java o C #. Esta es la razón por la que todos están tan entusiasmados con https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php porque hace que sea fácil adivinar lo que está buscando después de haber encontrado el método que desea en los documentos de webdriver.
De lo contrario, aparentemente, la mayoría de las otras funciones de PHPUnit se adhieren a las cosas originales de SeleniumTestCase
; He compilado algunos enlaces a continuación para centralizar un poco mi información. El selenio 1 no es "muerto", pero es viejo. PHPUnit todavía usa mucha arquitectura desde su implementación de Selenium 1, y Selenium 2 de PHPUnit no es realmente eso, sino una especie de Selenium 1 ++.
Por lo tanto, no hay razón para buscar en la fuente, solo intente hacer coincidir los casos de prueba de PHPUnit con los documentos de WebDriver. Además, algunos métodos en el tutorial para SeleniumTestCase
han cambiado los nombres en Selenium2TestCase
, pero no temas, la cosa sigue funcionando igual, solo un poco ofuscada.
Puede preguntar: "¿Por qué no usar SeleniumTestCase
?" Bueno, parece que el soporte para otros navegadores requiere el WebDriver, así que si quieres salir de Firefox, necesitarás Selenium2TestCase
(podría estar equivocado).
Aquí hay algunos enlaces útiles que encontré mientras raspaba esto:
Opciones de línea de comandos del servidor Selenium, 16-06-2013, incompletas, faltan cosas como
-singleWindow
: http://eswarg.blogspot.com/2013/06/selenium-server-commandline-options.htmlAlgunas opciones de línea de comandos más, de 4 años de edad: http://www.grails.org/Selenium+RC+Configuration
Ayuda de la línea de comandos del servidor Selenium, la documentación más completa que he encontrado hasta ahora:
java -jar selenium-server.jar -h
Chrome webdriver desde la línea de comandos: ¿Cómo puedo hacer que Chrome trabaje con Selenium usando php webdriver?
IE webdriver desde la línea de comandos: Cómo iniciar InternetExplorerDriver en pruebas de PHPUnit
PHPUnit configuración XML para múltiples navegadores en Selenium http://phpunit.de/manual/3.7/en/appendixes.configuration.html#appendixes.configuration.selenium-rc
Documentación para la clase
Selenium2TestCase
(!) http://apigen.juzna.cz/doc/sebastianbergmann/phpunit-selenium/class-PHPUnit_Extensions_Selenium2TestCase.htmlY, por supuesto, la enigmática PHPUnit Selenium docs: http://phpunit.de/manual/3.7/en/selenium.html
Para resolver mi pregunta de navegador múltiple arriba, todavía es posible usar el patrón estático $browser
de SeleniumTestCase
, pero el índice del browser
ha cambiado a browserName
:
public static $browsers = array(
array(
''name'' => ''Internet Explorer'',
''browserName'' => ''iexplore'', // not ''browser''
''host'' => ''localhost'',
''port'' => 4444,
''timeout'' => 30000,
),
};
Tenga en cuenta que Phing no admite la etiqueta <selenium>
si está utilizando una configuración XML.
PHPUnit La extensión Selenium (que contiene Selenium2TestCase
etc.) ya no forma parte del proyecto PHPUnit en sí, ahora es una extensión independiente , que también debe instalarse explícitamente (es decir, no es parte de la distribución de PHPUnit). Sin embargo, no parece haber ninguna documentación, incluso para la extensión separada.
Además, esta extensión ya no está desarrollada activamente y está parcialmente no actualizada con los últimos cambios en el protocolo WebDriver.
Para usar Selenium con PHPUnit, puede usar otras herramientas basadas en la biblioteca php-webdriver :
- Steward que integra el php-webdriver directamente a PHPUnit, para que pueda controlar el Selenium directamente desde sus pruebas.
- Codeception prueba de Codeception que proporciona una capa BDD sobre php-webdriver y PHPUnit