Проверка существования элемента с помощью Python Selenium

У меня проблема - я использую веб-драйвер selenium (firefox), чтобы открыть веб-страницу, щелкнуть несколько ссылок и т. д., а затем захватить скриншот.

Мой скрипт работает нормально из CLI, но при запуске через cronjob он не проходит первый тест find_element(). Мне нужно добавить отладку или что-то, что поможет мне понять, почему это не удается.

По сути, я должен щелкнуть якорь «Войти», прежде чем перейти на страницу входа. Конструкция элемента такова:

<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>

Я использую метод find_element By LINK_TEXT:

login = driver.find_element(By.LINK_TEXT, "log in").click()

Я немного новичок в Python, поэтому немного борюсь с языком...

A) Как сделать Я проверяю, что ссылка на самом деле подхватывается python? Должен ли я использовать блок try/catch?

B) Есть ли лучший/надежный способ найти элемент DOM, чем LINK_TEXT? Например. В JQuery вы можете использовать более конкретный селектор $('a.lnk:contains(log in)').do_something();


Я решил основную проблему, и это была просто проблема с пальцем - я вызывал скрипт с неверными параметрами - Простая ошибка.

Мне все же хотелось бы узнать, как проверить, существует ли элемент. Кроме того, пример/объяснение неявных/явных ожиданий вместо использования паршивого вызова time.sleep().

Ура, ns

55
задан ivanleoncz 11 June 2019 в 21:09
поделиться