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“:

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
