Selen - lokalizatory
Lokalizowanie elementów w Selenium WebDriver odbywa się za pomocą metod findElement () i findElements () udostępnianych przez klasę WebDriver i WebElement.
findElement () zwraca obiekt WebElement na podstawie określonych kryteriów wyszukiwania lub kończy się wyrzuceniem wyjątku, jeśli nie znajdzie żadnego elementu pasującego do kryteriów wyszukiwania.
findElements () zwraca listę elementów WebElements pasujących do kryteriów wyszukiwania. Jeśli nie zostaną znalezione żadne elementy, zwraca pustą listę.
W poniższej tabeli wymieniono całą składnię języka Java służącą do lokalizowania elementów w Selenium WebDriver.
metoda | Składnia | Opis |
---|---|---|
Według ID | driver.findElement (By.id (<identyfikator elementu>)) | Lokalizuje element przy użyciu atrybutu ID |
Wg nazwy | driver.findElement (By.name (<nazwa elementu>)) | Lokalizuje element przy użyciu atrybutu Name |
Według nazwy klasy | driver.findElement (By.className (<klasa elementu>)) | Lokalizuje element przy użyciu atrybutu Class |
Według nazwy znacznika | driver.findElement (By.tagName (<htmltagname>)) | Lokalizuje element za pomocą tagu HTML |
Poprzez tekst linku | driver.findElement (By.linkText (<linktext>)) | Lokalizuje łącze za pomocą tekstu łącza |
Według częściowego tekstu linku | driver.findElement (By.partialLinkText (<linktext>)) | Lokalizuje łącze, używając częściowego tekstu łącza |
Według CSS | driver.findElement (By.cssSelector (<selektor css>)) | Lokalizuje element za pomocą selektora CSS |
Przez XPath | driver.findElement (By.xpath (<xpath>)) | Lokalizuje element za pomocą zapytania XPath |
Wykorzystanie lokalizatorów
Przyjrzyjmy się teraz praktycznemu zastosowaniu każdej z metod lokalizatora za pomocą https://www.calculator.net
Według ID
Tutaj dostęp do obiektu odbywa się za pomocą identyfikatorów. W tym przypadku jest to identyfikator pola tekstowego. Wartości wprowadza się do pola tekstowego metodą sendkeys przy pomocy ID (cdensity).
driver.findElement(By.id("cdensity")).sendKeys("10");
Wg nazwy
Tutaj uzyskuje się dostęp do obiektu za pomocą nazw. W tym przypadku jest to nazwa pola tekstowego. Wartości wprowadza się do pola tekstowego metodą sendkeys przy pomocy ID (cdensity).
driver.findElement(By.name("cdensity")).sendKeys("10");
Według nazwy klasy
Tutaj obiekt jest dostępny za pomocą nazw klas. W tym przypadku jest to nazwa klasy elementu WebElement. Dostęp do wartości można uzyskać za pomocą metody gettext.
List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));
Według nazwy znacznika
Nazwa tagu DOM elementu może być użyta do zlokalizowania tego konkretnego elementu w WebDriver. Przy pomocy tej metody bardzo łatwo jest obsługiwać tabele. Spójrz na poniższy kod.
WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();
Według tekstu linku
Ta metoda pomaga zlokalizować element łącza z pasującym widocznym tekstem.
driver.findElements(By.linkText("Volume")).click();
Według częściowego tekstu linku
Ta metoda pomaga zlokalizować element łącza z częściowym dopasowaniem widocznego tekstu.
driver.findElement(By.partialLinkText("Volume")).click();
Według CSS
CSS jest używany jako metoda identyfikacji obiektu internetowego, jednak NIE wszystkie przeglądarki obsługują identyfikację CSS.
WebElement loginButton = driver.findElement(By.cssSelector("input.login"));
Przez XPath
XPath oznacza język ścieżki XML. Jest to język zapytań służący do wybierania węzłów z dokumentu XML. XPath jest oparty na drzewiastej reprezentacji dokumentów XML i zapewnia możliwość poruszania się po drzewie poprzez wybieranie węzłów przy użyciu różnych kryteriów.
driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");