Pregunta

Solo quería algunas opiniones de personas que han ejecutado Selenium (http://selenium.openqa.org) He tenido mucha experiencia con WaTiN e incluso escribí una suite de grabación para ello.Lo hice producir un código bien estructurado, pero como solo lo mantengo yo, parece que mi empresa prácticamente lo abandonó.Si ha ejecutado selenio, ¿ha tenido mucho éxito?Usaré .NET 3.5, ¿Selenium funciona bien con él?¿El código producido es limpio o simplemente es una lista de todas las interacciones?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx) ¿Qué tan bien funciona el conjunto de pruebas distribuidas?

¡Cualquier otra queja o elogio sobre el sistema será muy apreciado!

¿Fue útil?

Solución

Si estas usando IDE de selenio para generar código, luego obtendrá una lista de cada acción que ejecutará Selenium.Para mí, Selenium IDE es una buena manera de comenzar o hacer una prueba rápida de "probar y ver".Pero, cuando piensa en la capacidad de mantenimiento y en un código más legible, debe escribir su propio código.

Una buena manera de lograr un buen código de selenio es utilizar el Patrón de objeto de página de manera que el código represente su flujo de navegación.He aquí un buen ejemplo que veo en Codificación Dojo Floripa (desde Brasil):

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

Espero que ayude

Otros consejos

Estoy usando Selenium Remote Control para probar aplicaciones ASP.Net (que es a lo que supongo que también apuntarás), y funciona muy bien.

Si nunca has usado Selenium, mira algunos de los capturas de pantalla para usar Selenium IDE.Esto le dará una buena idea de cómo funciona el "Selenio".El IDE es un complemento de Firefox que básicamente le permite desarrollar pruebas rápidas de grabación y reproducción sobre la marcha.Sin embargo, para conjuntos de pruebas más grandes o para escribir pruebas realmente fáciles de mantener, recomendaría Selenium Remote Control.(Sin embargo, el IDE es fantástico si recién estás comenzando).

Control remoto de selenio le permite utilizar su lenguaje favorito y su marco de pruebas unitarias para controlar un navegador web y ejecutar sus pruebas.Si se siente más cómodo con C#/NUnit, puede escribir sus pruebas de esa manera y usar todas las ventajas de NUnit que desee.(Por ejemplo, el complemento Test-Driven.net).Además, dado que sus pruebas están escritas en un lenguaje de alto nivel, puede hacer cosas como heredar de una clase de prueba particular que puede usar para hacer que el código del método de prueba real sea mucho más limpio.(O al menos así es como escribo mis pruebas.Me permite probar escenarios complejos que mantienen el número de líneas de mi método de prueba en un número razonable).

Mencionas las pruebas distribuidas.Desafortunadamente no he encontrado una manera de usar el Rejilla de selenio proyecto con NUnit.Selenium Grid le permite ejecutar su conjunto de pruebas en varias máquinas e instancias de navegador diferentes.Entonces, en lugar de ejecutar, digamos, 200 métodos de prueba uno tras otro (es decir, en serie), podría distribuir la carga en, digamos, cuatro instancias de Grid (es decir, ejecutar en cuatro instancias de navegadores diferentes a la vez) en una sola máquina o en varias máquinas, dependiendo de qué tan distribuido desea estar.

Sin embargo, si escribe sus pruebas en Java o PHP, es posible que tenga más suerte.Espero que esto esté disponible a través de NUnit con el lanzamiento de NUnit2.5, que incluirá pNUnit para pruebas paralelas.

Si tiene más preguntas sobre el selenio, simplemente aclare su pregunta original y estaré encantado de intentar ayudarle.(El selenio es solo una de esas herramientas que uso todos los días, así que disfruto ayudando a que nuevas personas comiencen a utilizarlo...)

Comencé con Selenium IDE y Selenium Core.Definitivamente son buenas herramientas para comenzar.Pero no son muy poderosos, ya que sólo puedes usar Selenese, el lenguaje comando por comando basado en HTML de Selenium.

Ahora uso Selenium Remote Control con el controlador Ruby, lo que me permite utilizar lo que ofrece Ruby.Pruebo muchos entornos:Windows 2000, XP, Vista, Mac 10.4/10.5, y para cada uno de los que correspondan, Safari 2/3, Firefox 2/3, Internet Explorer 6/7.

Selenium afirma ser compatible con todos esos sistemas operativos y navegadores, aunque actualmente tengo problemas con Internet Explorer (mi primera pregunta sobre StackOverflow es sobre eso, en realidad).Pero no conozco ninguna otra herramienta que sea tan poderosa y funcione con tantas plataformas.

El mayor problema que he tenido con Selenium es el análisis de DOM.Los childNodes de JavaScript no son confiables porque Safari/Firefox ignoran los espacios en blanco y los nodos de comentarios, mientras que Internet Explorer no.XPath en Internet Explorer es entre 10 y 20 veces más lento que en SF/FF.InnerHTML no siempre es confiable en IE.

Selenium es una herramienta bastante decente, pero hay un par de cosas a tener en cuenta:

  • Selenium IDE y Selenium core no comparten el 100% de la misma funcionalidad.Por ejemplo, el IDE admite el clic derecho, pero la versión principal actual no lo tiene.Sin embargo, usar una versión más nueva de su repositorio soluciona ese problema.

  • En el caso de ext js, gwt, etc., asegúrese de tener los ID adecuados para los elementos de visualización en lugar de los generados automáticamente (aleatorios).

  • Mantenimiento de casos de prueba.He visto casos en los que se puso mucho esfuerzo en las pruebas de Selenium y en una buena cobertura.Más tarde, las pruebas empezaron a fallar porque la persona que las creaba estaba ocupada con otras tareas y nadie más quería tocarlas.Pero este era un problema con la gerencia, no con Selenium.

Soy un gran admirador de Selenium.Sin embargo, un problema importante que es bueno saber de antemano es que Selenium IDE tiene muchos problemas con las ventanas emergentes.Estos problemas no persisten en Selenium RC, pero pueden hacer que el desarrollo sea un dolor de cabeza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top