Sobes.tech
Junior

Jakie istnieją lokalizatory w Selenium?

sobes.tech AI

Odpowiedź od AI

Lokalizatory w Selenium to mechanizmy służące do wyszukiwania elementów sieciowych na stronie. Główne typy lokalizatorów:

  • ID: Pozwala znaleźć element po atrybucie id. Najszybszy i najbardziej niezawodny sposób, jeśli ID jest unikalne i stabilne.
  • Name: Pozwala znaleźć element po atrybucie name. Mniej niezawodny niż ID, ponieważ name nie zawsze jest unikalny.
  • Class Name: Pozwala znaleźć elementy po atrybucie class. Zwraca listę elementów, ponieważ kilka elementów może mieć tę samą klasę.
  • Tag Name: Pozwala znaleźć elementy po nazwie tagu HTML (np. div, a, input). Zwraca listę elementów.
  • Link Text: Pozwala znaleźć element <a> (link) po dokładnym tekście linku.
  • Partial Link Text: Pozwala znaleźć element <a> (link) po częściowym dopasowaniu tekstu linku.
  • CSS Selector: Potężny i elastyczny sposób wyszukiwania elementów z użyciem składni selektorów CSS. Pozwala na wyszukiwanie po kombinacji atrybutów, tagów, klas, hierarchii i stanów.
  • XPath: Najpotężniejszy i najbardziej elastyczny sposób wyszukiwania elementów, oparty na nawigacji po strukturze dokumentu XML/HTML. Pozwala na tworzenie złożonych ścieżek do elementów, wyszukiwanie po atrybutach, zawartości i położeniu.

Przykłady użycia:

# Java
WebElement elementById = driver.findElement(By.id("myElementId"));
WebElement elementByName = driver.findElement(By.name("elementName"));
List<WebElement> elementsByClass = driver.findElements(By.className("myClass"));
WebElement elementByCss = driver.findElement(By.cssSelector("div.container > input[type='text']"));
WebElement elementByXpath = driver.findElement(By.xpath("//div[@id='parent']/button[text()='Submit']"));
# Python
element_by_id = driver.find_element(By.ID, "myElementId")
element_by_name = driver.find_element(By.NAME, "elementName")
elements_by_class = driver.find_elements(By.CLASS_NAME, "myClass")
element_by_css = driver.find_element(By.CSS_SELECTOR, "div.container > input[type='text']")
element_by_xpath = driver.find_element(By.XPATH, "//div[@id='parent']/button[text()='Submit']")

Wybór lokalizatora zależy od stabilności elementu web i struktury strony. Zaleca się używanie ID, CSS Selector lub XPath, gdy są poprawnie skonstruowane.