t.me/atinfo_chat Telegram группа по автоматизации тестирования

Python. Pytest: ui тесты падают при запуске браузера в режиме headless

Теги: #<Tag:0x00007f07fe858a60> #<Tag:0x00007f07fe858948> #<Tag:0x00007f07fe858858> #<Tag:0x00007f07fe858740> #<Tag:0x00007f07fe858650>

Прошу помощи в вопросе: есть элемент на странице и при запуске теста когда chrome в полноценном режиме, то элемент находится и тест работает в 100 случаях из 100, но если запускаю этот же тест в хроме с режимом headless, то элемент не находится, скажите почему?
Вот сам линк как его ищу:

  • LIKE_LINK_FOR_MESSAGE = (By.XPATH, “//*[text()=‘Мне нравится’]”)

Может язык не русский и там что-то типа “I like it”. Смотри скрин после “падения” теста

выгрузите dom страницы, на которой падает (а можно еще и предыдущей страницы например) в какой-нибудь файлик, или залогируйте его, если есть логгер

Подскажите пожалуйста как это сделать в режиме headless?

точно так же, как и без него. здесь же не принципиально в каком режиме браузер запускается. хтмл страницы можно выгрузить и в хедлес и в хедфул. не сильна в питоне, погуглите, я нагуглила эту страницу например, может там есть полезные методы https://stackoverflow.com/questions/7263824/get-html-source-of-webelement-in-selenium-webdriver-using-python
записываете в файлик потом стрингом и читаете после прогона, смотрите что по факту там стоит

1 Симпатия

В итоге если запускаю тесты в headless режиме, то соурс страницы не копируется в файл

        html = self.driver.page_source
        time.sleep(5)
        file = open('testFile.txt', 'w')
        time.sleep(5)
        file.write(html)
        time.sleep(5)
        file.close()

если НЕ в режиме headless соурс страницы получаю в файле, почему?

Если страница доступна без авторизации и т.д. то поможет cURL. Из консоли Linux\Mac.
curl https://automated-testing.info/
на винде не помню как сделать.