Testing with Selenium
Tämä dokumentaatio kuvaa prosessia webforJ-sovellusten testaamiseen Seleniumin avulla, keskittyen erityisesti HelloWorldView:hin webforj-archetype-hello-world-projektista.
Lisätietoja webforj-archetype-hello-world-projektista saat Sovelluksen perusteet -esittely -osiosta.
Esivaatimukset
Ennen Selenium-testien suorittamista varmista, että:
- webforJ-sovellus on oikein asetettu ja toimii paikallisella palvelimellasi.
- Olet asentanut:
- Selenium Java -kirjastot.
- Yhteensopivan WebDriverin selaimellesi.
- Maven projektin riippuvuuksia varten.
Maven-konfiguraatio
Lisää tarvittavat riippuvuudet pom.xml-tiedostoon Seleniumille ja muille testauskirjastoille:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.27.0</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.9.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Testiesimerkki: HelloWorldView
Seuraava koodi esittää Selenium-pohjaisen testin HelloWorldView-komponentille.
package com.example.views;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import static java.time.Duration.ofSeconds;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
import io.github.bonigarcia.wdm.WebDriverManager;
class HelloWorldViewTest {
private WebDriver driver;
private static final String PORT = System.getProperty("server.port", "8080");
@BeforeAll
static void setupAll() {
WebDriverManager.chromedriver().setup();
}
@BeforeEach
void setup() {
driver = new ChromeDriver();
driver.get("http://localhost:" + PORT + "/");
new WebDriverWait(driver, ofSeconds(30))
.until(titleIs("webforJ Hello World"));
}
@AfterEach
void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
void shouldClickButton() {
WebElement button = driver.findElement(By.tagName("dwc-button"));
assertEquals("Say Hello", button.getText(), "Button text mismatch!");
}
}
Keskeiset vaiheet
-
Alusta WebDriver:
- Käytä
WebDriverManager-työkalua hallitaksesi selaimen ajurin suoritettavaa tiedostoa automaattisesti.
- Käytä
-
Aseta testausympäristö:
- Käynnistä testipalvelin
http://localhost:<port>/. - Odota, kunnes sivun otsikko vastaa odotettua
webforJ Hello World.
- Käynnistä testipalvelin
-
Vuorovaikuta elementtien kanssa:
- Etsi elementtejä käyttäen
By.tagName,By.idtai muita Selenium-lokattoreita. - Vahvista odotettu käyttäytyminen, kuten painikkeiden napsautukset tai tekstin muutokset.
- Etsi elementtejä käyttäen
Koska webforJ tuottaa yksisivuisen verkkosovelluksen, Selenium ei ole tietoinen DOM-muokkauksista sen jälkeen, kun alkuperäinen sivu on ladattu. Voit käyttää Seleniumin WebDriverWait API:a odottaaksesi, kunnes DOM on käännetty.
- Siivous:
- Lopeta WebDriver-istunto vapauttaaksesi resurssit.
Testien suorittaminen
-
Käynnistä webforJ-palvelin:
mvn jetty:run -
Suorita testitapaukset:
mvn test
Odotettu käyttäytyminen
- Käyttäessäsi
http://localhost:<port>/,HelloWorldView-sivu latautuu. dwc-button-elementin, jonka teksti onSay Hello, pitäisi olla läsnä.