2008-09-19 8 views
16

Solo quería algunas opiniones de personas que han administrado Selenium (http://selenium.openqa.org). He tenido mucha experiencia con WaTiN e incluso he escrito una suite de grabación para ella. Lo tenía produciendo un código bien estructurado, pero al ser mantenido por mí, parece que mi empresa casi lo abandonó. Si ha corrido selenio, ¿ha tenido mucho éxito? Usaré .NET 3.5, ¿funciona bien el Selenium? ¿El código se produce limpio o simplemente 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 es justo el paquete de pruebas distribuidas?Selenium Critique

Cualquier otra queja o cumplidos en el sistema sería muy apreciada!

Respuesta

26

Si está utilizando Selenium IDE para generar código, solo obtendrá una lista de cada acción que se ejecutará. Para mí, Selenium IDE es una buena manera de comenzar o hacer una prueba rápida de "probar y ver". Pero, cuando piense en facilidad de mantenimiento y en un código más legible, debe escribir su propio código.

Una buena forma de lograr un buen código de selenio es usar el Page Object Pattern de forma que el código represente su flujo de navegación. Aquí es un buen ejemplo que veo en Coding Dojo Floripa (de 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); 
    } 
} 

Esperamos que ayuda a

+0

Hola marcospereira, soy nuevo en selenio. He intentado este Ejemplo pero cuando comienzo recibo "No se puede conectar el problema del servidor". No entiendo dónde me estoy equivocando. Por favor, ayúdame. Gracias –

7

estoy usando selenio control remoto con el fin de probar aplicaciones de ASP.NET (que es lo que' estoy asumiendo que usted también se enfocará), y funciona de maravilla.

Si nunca ha usado Selenium, mire algunos de los screencasts para usar Selenium IDE. Esto te dará una buena idea de cómo funciona el 'Selenio'. El IDE es un complemento de Firefox que básicamente te permite desarrollar pruebas rápidas de grabación y reproducción mientras avanzas. Sin embargo, para suites de prueba más grandes o para escribir pruebas realmente mantenibles, recomendaría Selenium Remote Control. (El IDE es excelente si recién está empezando).

Selenium Remote Control le permite usar su idioma favorito y el marco de prueba de la unidad para conducir un navegador web con el fin de ejecutar sus pruebas. Si se siente más cómodo con C#/NUnit, puede escribir sus pruebas de esa manera y usar todos los elementos de NUnit que desee. (Por ejemplo, el plugin Test-Driven.net). Además, como 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 su código de método de prueba sea mucho más limpio. (O al menos así es como escribo mis pruebas. Me permite probar situaciones complejas que mantienen mi método de prueba en conteo de líneas en un número razonable).

Menciona las pruebas distribuidas. Lamentablemente, no he encontrado una forma de utilizar el proyecto Selenium Grid con NUnit. Selenium Grid le permite ejecutar su suite de pruebas en un número de máquinas diferentes e instancias de navegador. Entonces, en lugar de ejecutar 200 métodos de prueba uno tras otro (es decir, en serie), podría distribuir la carga en, por ejemplo, cuatro instancias de Grillas (es decir, ejecutarse en cuatro navegadores diferentes instancias a la vez) en una sola máquina o múltiples máquinas sobre cómo distribuido desea obtener.

Si escribe sus pruebas en Java o PHP, puede tener mejor suerte. Espero que 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 estaremos encantados de ayudarlo. (El selenio es solo una de esas herramientas que uso todos los días, así que me gusta ayudar a gente nueva a comenzar ...)

3

Empecé con Selenium IDE y Selenium Core.Esas definitivamente son buenas herramientas para comenzar. Pero no son muy potentes, ya que solo puedes usar Selenese, el lenguaje comando por comando basado en HTML de Selenium.

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

Selenium afirma ser compatible con todos esos SO 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 que funcione con tantas plataformas.

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

1

herramienta de selenio es bastante bueno, pero hay un par de cosas a tener en cuenta:

  • IDE Selenio El selenio y el núcleo no comparten el 100% misma funcionalidad. Por ejemplo, el clic derecho es compatible con IDE, pero la versión principal actual no lo tiene. Sin embargo, el uso de una versión más nueva de su repositorio resuelve eso.

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

  • Mantenimiento de casos de prueba. He visto casos en los que se realizaron muchos esfuerzos en las pruebas de Selenio y una buena cobertura. Más tarde, las pruebas comenzaron a fallar ya que la persona que las creó estaba ocupada con otras tareas y nadie más quería tocarlas. Pero este era un problema con la gerencia, no el Selenio.

1

Soy un gran admirador de Selenium. Sin embargo, una gran sorpresa que es bueno saber con anticipación es que Selenium IDE tiene muchos problemas con las ventanas emergentes. Estos problemas no persisten en Selenium RC, pero puede hacer que el desarrollo sea un dolor de cabeza.