Используйте Explicit Waits и Implicit Waits в связке, так ваши тесты будут гораздо стабильные.
Так же не лишним будет установить время загрузки страницы driver.set_page_load_timeout(60)
Используй time.sleep() только если вообще нет никаких вариантов. Так-то это плохая практика.
Задержки смотри на: https://selenium-python.readthedocs.io/waits.html
И если страница редиректит то проще написать проверку по которой селениум будет ждать того или инного элемента с помощью модуля ExpectedCondition
Попробуй искать по имени тега 'input', потом получать из имени атрибут айди и уже передавать его функции.
Получить атрибут можно таким образом:
web_elements = driver.find_elements_by_tag_name('input')
for element in web_elements:
element_id = element.get_attribute('id')
your_function(element_id)
Не уверен что это возможно, так как опцию '--headless' вы указываете перед запуском браузера.
Но вы можете сделать скриншот, если вам необходимо узнать что происходит на странице:
Аргумент self необходим для функций что находятся внутри класса (методы), в них передаётся класс или экземпляр класса. Это необходимо для обращения к собственным атрибутам и методам.
В вашем случае в них нет никакой необходимости так как функции находятся вне класса.
Но если вы захотите их присвоить каким либо методам класса то данный аргумент self будет необходим.
Насколько я понимаю .getattr() это обращение к атрибуту объекта, а не веб-элемента.
Попробуйте найти, интересующий вас вебэлемент, и обратиться к его атрибуту следующим образом: web_element.get_attribute('contentEditable')
Ответ написан
Комментировать
Комментировать
Оценили как «Нравится»
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.