Назад к вопросам
Junior
70
questionbank

Какие селекторы в HTML могут быть использованы автоматизатором для написания автотестов UI?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Автоматизатор может использовать следующие селекторы в HTML для написания UI-тестов:

  • By ID: Самый надежный, если ID уникален. element = driver.find_element(By.ID, "my-element-id")
  • By Name: Ищет элементы по атрибуту name. element = driver.find_element(By.NAME, "username")
  • By Class Name: Ищет элементы по атрибуту class. Может возвращать несколько элементов. elements = driver.find_elements(By.CLASS_NAME, "button-primary")
  • By Tag Name: Ищет элементы по имени тега. elements = driver.find_elements(By.TAG_NAME, "a")
  • By Link Text: Ищет элементы <a> по полному совпадению текста ссылки. element = driver.find_element(By.LINK_TEXT, "На главную")
  • By Partial Link Text: Ищет элементы <a> по частичному совпадению текста ссылки. element = driver.find_element(By.PARTIAL_LINK_TEXT, "главн")
  • By CSS Selector: Мощный и гибкий способ поиска, использующий синтаксис CSS. element = driver.find_element(By.CSS_SELECTOR, "div.container > p#welcome-message")
  • By XPath: Самый гибкий и мощный, но может быть менее читаемым и более хрупким. Позволяет искать элементы по всему DOM-дереву. element = driver.find_element(By.XPATH, "//input[@type='text' and @name='email']")

Выбор селектора зависит от структуры страницы, наличия уникальных атрибутов и требуемой гибкости. CSS и XPath являются наиболее часто используемыми для сложных сценариев.

Примеры использования в Python с Selenium WebDriver:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome() # Или другой браузер

# By ID
element_by_id = driver.find_element(By.ID, "submit-button")

# By Class Name
elements_by_class = driver.find_elements(By.CLASS_NAME, "error-message")

# By CSS Selector
element_by_css = driver.find_element(By.CSS_SELECTOR, "#login-form input[type='password']")

# By XPath
element_by_xpath = driver.find_element(By.XPATH, "//label[text()='Имя пользователя']/following-sibling::input")

driver.quit()
```</details>