⚖️ Selenium vs Playwright: локаторы

← К оглавлению урока

⚡ Главное

  • By.ID/CSS/XPATHget_by_role/label/text
  • WebDriverWait + EC → авто-ожидание в действии и expect
  • find_elements()[i].nth(i) / .filter()
  • element.text == ...expect(loc).to_have_text(...)

Сравнение 1: найти и кликнуть кнопку

🟡 Selenium

btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "button.login")
    )
)
btn.click()

🟢 Playwright

page.get_by_role(
    "button", name="Login"
).click()

Сравнение 2: проверить текст

🟡 Selenium

el = driver.find_element(By.CLASS_NAME, "msg")
assert el.text == "Готово"   # снимок, может флакать

🟢 Playwright

expect(page.locator(".msg")).to_have_text("Готово")
# ждёт до таймаута, пока текст не совпадёт

Сравнение 3: выбрать N-й элемент списка

🟡 Selenium

items = driver.find_elements(By.CSS_SELECTOR, ".item")
items[1].click()
assert len(items) == 5

🟢 Playwright

items = page.locator(".item")
items.nth(1).click()
expect(items).to_have_count(5)
⚠️ Сравнение показывает разницу подходов, а не «что лучше». В реальном проекте используйте принятый в команде инструмент.