Как проверить значение заголовка страницы
Что проверяют
Прежде всего, уточните ли вы, какой «заголовок» имеется в виду: <title> вкладки, видимый <h1> или HTTP-заголовок ответа. Затем смотрят, умеете ли вы проверять надёжно, с ожиданием, а не через time.sleep. Следом часто спрашивают, почему тест на заголовок падает через раз.
Как отвечать
Покажите несколько способов под разные задачи:
- Selenium,
<title>: свойствоdriver.title. В SPA заголовок меняет JavaScript после загрузки, поэтому проверка идёт через ожидание:WebDriverWait(driver, 10).until(EC.title_is("Вакансии"))илиEC.title_contains(...); - Selenium,
<h1>:driver.find_element(By.TAG_NAME, "h1").text, лучше послеEC.visibility_of_element_located, потому что.textвозвращает только видимый текст; - Playwright:
expect(page).to_have_title(re.compile("Вакансии"))сам повторяет проверку до таймаута, по умолчанию 5 секунд.page.title()читает значение один раз, без ожидания; - без браузера:
requestsплюс BeautifulSoup,soup.title.string. Годится только для HTML, который отдаёт сервер: заголовок, выставленный скриптом, так не увидеть; - HTTP-заголовок:
response.headers["Content-Type"], словарь заголовков вrequestsнечувствителен к регистру.
Для SEO-проверок рядом смотрят <meta name="description"> и og:title, они тоже лежат в <head>.
В тесте сравнивайте с ожидаемым значением через assert с понятным сообщением, а не печатайте результат в консоль: иначе в CI падение никто не заметит.
Где спотыкаются
Проверяют driver.title сразу после get(). На SPA заголовок ещё старый, тест падает через раз, и его начинают «лечить» паузами.
Вызывают requests.get без timeout. По умолчанию таймаута нет, и зависший сервер подвешивает весь прогон.
Сравнивают строку целиком там, где в заголовке есть счётчик или название сайта через разделитель. Надёжнее проверять вхождение или регулярное выражение.