Skočiť na obsah Skočiť na menu

Inet.sk - internetový denník

internetový denník

WebTest a Webdriver- „most priateľstva“- prostredníctvom Groovy, časť II.

Spojenie dvoch nezávislých open-source projektov na automatické testovanie webových aplikácií do jedného celku.


V prvej časti som sľúbil, že sa podrobnejšie pozrieme na kódy v Jave, Groovy a že podrobnejšie popíšem postupy integrácie Google Webdriver do Canoo WebTest.

Poďme teda pekne po poriadku. Google Webdriver je možné stiahnuť z jeho domáceho webu. V čase písania tohto článku bola aktuálna verzia r870. Tu si dovolím upozorniť, že staršie verzie Webdriver-a sú k dispozícii vybratím „Deprecated downloads“ a stlačením buttona „Search“:

webdriver-download

Od verzie r280, s ktorou som začínal pri písaní článkov o Google Webdriver, sa toho dosť zmenilo. Okrem zmien popísaných v uvedenom článku, veľmi pozitívnou zmenou je použite prehliadača Mozilla Firefox bez nutnosti použitia WebDriver pluginu - [webdriver-firefox.xpi]. Teraz je teda možné používať Firefox bez dodatočnej inštalácie xpi.

Poďme ale priamo na testovacie kódy v ich jednotlivých modifikáciách [Java, Groovy, WebTest].


Java:

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.*;

 

public class Example  {

 public static void main(String[] args) {

     WebDriver driver = new FirefoxDriver();

 

     driver.get("http://www.google.com/ncr");

 

     WebElement element = driver.findElement(By.name("q"));

 

     element.sendKeys("Cheese!");

 

     element.submit();

 

     System.out.println("Page title is: " + driver.getTitle());

     driver.close();

  }

}

Tento kód postupne vykoná nasledujúce akcie:

  • Otvorí Firefox [new FirefoxDriver()].
  • Naviguje na stránku google [driver.get("http://www.google.com/ncr")].
  • Do vyhľadávacieho poľa zadá reťazec „Cheese!“ [element.sendKeys("Cheese!")].
  • Klikne na button „Google search“ [element.submit()].
  • Vypíše na konzolu titul result-stránky [System.out.println("Page title is: " + driver.getTitle())] .
  • Zatvorí Firefox [driver.close()].

 

Rovnaký kód v jazyku Groovy, v ktorom pribudol záverečný test na výskyt reťazca „Cheese“ v titulku odpovede zo servera.

Groovy:

/**

 * @author Roman Hesteric (www.together.sk)

 */

 import org.openqa.selenium.By;

 import org.openqa.selenium.WebDriver;

 import org.openqa.selenium.WebElement;

 import org.openqa.selenium.firefox.*;

 import com.canoo.webtest.engine.StepFailedException as SFE

 

public class GExample{

 

    /**

     * @param args

     */

    public static void main(def args){

        WebDriver driver = new FirefoxDriver();

 

        driver.get("http://www.google.com/ncr");

 

        WebElement element = driver.findElement(By.name("q"));

       

        element.sendKeys("Cheese!");

 

        element.submit();

 

        String sTitle = driver.getTitle();

       

        println("Page title is: " + sTitle);

        driver.close();

       

        if(!sTitle.contains("Cheese")) {

              throw new SFE("Problem found!")

       }

    }   

}

 

Pomocou triedy „StepFailedException” som pripravil budúcu komunikáciu groovy kódu s Canoo WebTestom. Ak totiž potrebujeme oznámiť Canoo WebTestu, že test nedopadol dobre a že teda nechceme aby sa test vykonával ďalej, vyhodíme StepFailedException – čim zastavíme vykonávanie testu a zobrazíme výsledky testu s zlyhaním v kroku <groovy>.

Na spustenie groovy kódu v prostredí Eclipse potrebujete plug-in do Eclipse, ktorý nájdete tu.
 

Na úspešné skompilovanie nezabudneme pridať jar-súbory Google Webdriver  a Canoo WebTest do classpath groovy projektu :

 

Samotné spustenie programu sa vykoná pomocou „Run As => Groovy”

Výsledok spustenia groovy projektu v prostredí Eclipse:

 

Teraz to celé „zlepíme“ dohromady a zapíšeme to v Canoo WebTest XML zápise nasledovne:

 

Canoo WebTest:

<?xml version="1.0"?>

<!--

| Author        : Ing. Roman Hesteric (www.together.sk)

-->

 

<project name="canoo_webdriver" basedir="." default="canoo_webdriver">

 

 <target name="canoo_webdriver">

    <antcall target="canoo_webdriver1"/>

 </target>

   

 <target name="canoo_webdriver1">

    <webtest name="canoo_webdriver1">

      <steps>

       <storeProperty name="find" value="Cheese"/>

       <groovy>     

         import org.openqa.selenium.By;

         import org.openqa.selenium.WebDriver;

         import org.openqa.selenium.WebElement;

         import org.openqa.selenium.firefox.*;

         import com.canoo.webtest.engine.StepFailedException as SFE

 

         WebDriver driver = new FirefoxDriver();

 

         driver.get("http://www.google.com/ncr");

 

         WebElement element = driver.findElement(By.name("q"));

                                        

         String sFind = step.getWebtestProperty("find").toString();

      

         element.sendKeys(sFind);

 

         element.submit();

             

  String sTitle = driver.getTitle();

                                 

         println("Page title is: " + sTitle);

         driver.close();

                          

         if(!sTitle.contains("Cheese")) {

           throw new SFE("Problem found!");

         }

       </groovy>

        <echo message="Test OK"/>

     </steps>

   </webtest>

 </target>                      

</project>

 

 

Všimnite si ako komunikuje Groovy kód s kontextom Canoo Webtest. WebTest uložil do property/premennej [storeProperty name="find" value="Cheese"/>] „find“ hodnotu „Cheese“. Groovy ju prečítal [String sFind = step.getWebtestProperty("find").toString()] a použil. Opačným spôsobom [step.setWebtestProperty()] zafunguje aj komunikácia smerom z Groovy do WebTest-u.

 

Autor pracuje ako programátor vo firme www.together.sk

 


Pôvodná diskusia k článku

Skoda ze sa zaoberate len free utilitami urcenymi na testovanie webovych aplikacii. Myslim ze mala investicia do prefesionalneho nastroju by zjednodusil vasu pracu. Na testovanie asp(x) aplikacii vyuzivam Visual Studio Tester Edition ktory ktory ktore tu popisujete vykonava automaticky.

07. 04. 2009 ceco 212.108.216.xxx

Zdravim kolegu. Java je tiez profesionalny nastroj ;-) I ked je zadarmo. ASP(X) aplikacie sa daju samozrejme testovat prostrednictvom CWT, alebo Google Webdriver. Pozri si aj predchadzajuce clanky tykajuce sa testovacich automatov webovych aplikacii. Visual Studio Tester Edition som este nevidel, ale skusim sa na to pozriet. Tento produkt ma vsak uz na zaciatku niekolko zjavnych nevyhod. Peniaze & platformova zavislost ...
Kazdopadne dik za tip.

07. 04. 2009 Roman Hesteric 87.197.128.xxx

No ta zavislost je pravdiva ale zatial ma nejak neovplyvnovala kedze aj vyvijana aplikacia je na tej istej platforme:)

07. 04. 2009 ceco 212.108.216.xxx

Zdravim. Prave to pozeram [vola sa to: Visual Studio Team Test - Quick Reference z 30.3.2009]. Zatial to samozrejme nemozem komentovat, ale skusim to nainstalovat a potom sa podelim so svojimi dojmami. Zatial som ale este nepochopil, co myslite pod tym, ze VSTT vykonava "automaticky to, co ja popisujem" v clanku o inegracii CWT a GWD.


07. 04. 2009 Roman Hesteric 87.197.128.xxx

Ak to mate stiahnute skuste si zalozit novy test typu WebTest.. automaticky by sa mal otvorit IE a malo by sa zacat nahravanie vsetkych krokov ktore budete v prehliadaci robit ( to je ta prva cast kde googla zadavate Cheese)..ci uz su to vyplnene parametre objektov, alebo akcie vykonane na objektoch.. Ked mate nahrany takyto webtest zalozte si novy test typu LoadTest (zatazovy test) do ktoreho si pridate dany WebTest (to je ta cast kde to "lepite") ..v LoadTeste si mozete naozaj vela vlastnosti ..(najdolezitejsie je asi pocet simulovanych uzivatelov a sledovanie zatazenia systemu)... dalej to uz len spustite a sledujete grafy a vypis chyb ..teda dufam ze hovorime obaja o tom istom :D

07. 04. 2009 ceco 212.108.216.xxx

Zdravim, myslim si ze nehovorime o tom istom. Urcite nechcem zacinat flame, ale "nahravanie vsetkych krokov" [Canoo Webtest Recorder], alebo "pocet simulovanych uzivatelov" na load-testy [-Dwt.parallel.nbWorkers=XX] to teda urcite nie je nic co by CWT, alebo WD nemal ... Cely tento clanok totiz nie je predstavenie CWT, resp. GWD [opis aj tychto featuriek najdete tiez na tomto webe]. Vsetko, co popisujete ako uzasne features VSTT je implementovane uz roky v CWT. Cim sa nechcem v ziadnom pripade dotknut VSTT ;o) Kazdopadne je to dobry tip pre citatelov tejto diskusie, ze existuje aj nieco nove a oficialne podporovane MS. Vzdy je fajn, ked existuje viac moznosti a clovek si moze vyberat.

07. 04. 2009 Roman Hesteric 87.197.128.xxx

Tak som to pozrel a toto som zistil [troska anglictiny z popisu na MSDN]: "...Because the Web test engine works at the HTTP layer, it does not directly simulate client-side scripting like JavaScript or ActiveX controls". Takze tymto sa myslim konci cela diskusia okolo VSTT/CWT. Ak to troska ndnesiem, tak nemozeme predsa porovnavat drahy jednoucelovy stroj s vyrobnou linkou, ktora je este k tomu cela zadarmo. Bolo by to nefer [voci tomu jednoucelovemu stroju ;o)]

09. 04. 2009 Roman Hesteric 87.197.128.xxx

Je Vaša doména voľná?

Platená reklama

Textová reklama

Ako začať podnikať na internete? Nechajte si poradiť. Aký má byť obsah kvalitne www stránky? Tvorba www stránok, Tvorba webu, Redakčný systém - CMS, Prieskumy o nakupovaní na internete, Pôžičky
Kompletné informácie o Kika Banská Bystrica | Čo takto navštíviť Viedeň? | Zaujímavé informácie priamo od zdroja

Newsletter


Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899

Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk


Bilancia skrývky Fotokniha Fotografie Osobnosti.sk