Lokalizowanie elementu za pomocą nazwy klasy

Link do strony testowej: Testing Playground for Selectors

Elementy lokalizowane przez By.className

Lokalizowania elementów HTML na podstawie atrybutu class:

  • Jeśli wiele elementów ma tę samą klasę – użyj findElements().
  • Preferuj By.className w elementach o semanticznej nazwie klasy.
  • Nie używaj do dynamicznych lub generycznych klas ("container", "row").
  • Nie podawaj wielu klas naraz ("btn primary").
ElementclassNameJak lokalizować
Przycisk (oba)btnBy.className("btn")findElements()
Przycisk primaryprimaryBy.className("primary")
Przycisk secondarysecondaryBy.className("secondary")
Pola formularzainput-fieldBy.className("input-field")
Nagłówki tabelitableHeaderBy.className("tableHeader")
Elementy listy głównejlist-itemBy.className("list-item")
Elementy zagnieżdżonenestedBy.className("nested")
Ukryty paragraftopSecretBy.className("topSecret")
Wrapper suwakaslider-wrapperBy.className("slider-wrapper")
Elementy scrollowanescroll-itemswitchTo().frame(...)By.className(...)
Przycisk "Accept" (iframe)accept-btnswitchTo().frame(...)By.className(...)

Przyciski .btn primary i .btn secondary

// Kliknij pierwszy przycisk z klasą "btn"
WebElement button = driver.findElement(By.className("btn"));
button.click();

// Albo znajdź wszystkie przyciski z klasą "btn"
List<WebElement> buttons = driver.findElements(By.className("btn"));
System.out.println("Liczba przycisków z klasą btn: " + buttons.size());

Pola input – .input-field

// Wszystkie pola z klasą input-field
List<WebElement> inputs = driver.findElements(By.className("input-field"));
System.out.println("Liczba inputów z klasą input-field: " + inputs.size());

Tabela – nagłówki

List<WebElement> headers = driver.findElements(By.className("tableHeader"));
for (WebElement header : headers) {
    System.out.println("Nagłówek: " + header.getText());
}

Lista zagnieżdżona

List<WebElement> listItems = driver.findElements(By.className("list-item"));
List<WebElement> nestedItems = driver.findElements(By.className("nested"));

Ukryty element

WebElement secret = driver.findElement(By.className("topSecret"));

Suwak wrapper

WebElement wrapper = driver.findElement(By.className("slider-wrapper"));

Iframe – nie dotyczy className, bo iframe ma tylko id, ale w jego srcdoc

driver.switchTo().frame("testFrame");
List<WebElement> scrollItems = driver.findElements(By.className("scroll-item"));
WebElement acceptBtn = driver.findElement(By.className("accept-btn"));
driver.switchTo().defaultContent();