Całość kursu dostępna tutaj
Selenium WebDriver jest biblioteką w pełni obiektową. Zgodnie z założeniem wszystko w tym także elementy na stronie są obiektami. Dzięki takiemu podejściu możemy elementy wyszukiwać i zapisywać w pamięci jako obiekty, po czym wykonywać akcje na obiektach.
Model obiektowy przydaje się także podczas modelowania struktury naszych testów, ale o tym będzie w kolejnych rozdziałach.
Najpierw inicjalizujemy obiekt typu WebElement
import org.openqa.selenium.By; import org.openqa.selenium.WebElement;
WebElement linkToAgilePage = driver.findElement(By.linkText("Agile"));
Istnieje wiele różnych sposobów na wyszukiwanie elementów na stronie.
Aby sprawdzić czego możemy użyć wpisujemy w Eclipse:
driver.findElement(By.
i wciskamy [SPACJA]. IDE podpowie nam czego możemy użyć.
Najczęściej używane (przeze mnie) to:
By.id(); By.name(); By.linkText(); By.xpath();
Dzieki takiej różnorodności możemy wybrać metodę poszukiwania elementów na stronie, która będzie najmniej ryzykowna. Chodzi tutaj o ryzyko tego, że dany element wkrótce może się zmienić albo nie będzie unikatowy.
Następnie możemy wykonywać już akcje na wyszukanych obiektach.
linkToAgilePage.click();
Przykładowy test z kilkoma akcjami wykonanymi na elementach strony znajdziecie poniżej. W następnym rozdziale zajmiemy się czyszczeniem naszych testów tak by były bardziej czytelne.
package pl.testowka; import static org.testng.Assert.*; import org.testng.annotations.AfterClass; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class TestowkaTest { static WebDriver driver; @BeforeClass public void setUp() { driver = new FirefoxDriver(); } @Test public void ShouldBePosibleToSearchTestowkaAtGoogle() throws InterruptedException { driver.get("http://google.pl"); WebElement searchField = driver.findElement(By.name("q")); searchField.sendKeys("testowka.pl"); WebElement searchButton = driver.findElement(By .xpath("//*[@id=\"gbqfb\"]/span")); searchButton.click(); for (int second = 0;; second++) { if (second >= 60) fail("timeout"); try { if (driver.findElement(By.linkText("Testowka.pl")) .isDisplayed()) { break; } } catch (Exception e) { } Thread.sleep(1000); } WebElement linkToTestowka = driver.findElement(By .linkText("Testowka.pl")); linkToTestowka.click(); } @AfterClass public static void tearDown() { driver.close(); } }