Невозможно нацелить элемент в Python - Селен. - PullRequest
0 голосов
/ 05 мая 2020

Я начинаю с Python - Selenium, и я не могу настроить таргетинг на элемент на веб-сайте входа. Я пробовал много вариантов нацеливания на эту кнопку, но ни один из них не работает (имя класса, css селектор, идентификатор, имя ..). Когда я пропускаю этот шаг и перехожу на следующую страницу вручную по точному URL-адресу, поиск, фокусировка, отправка ключей к элементу и нажатие кнопки «Далее» не является проблемой, но эта кнопка «добро пожаловать» не может быть нацелена полностью. Использование функции «driver.find_element_by_XXX».

Например: «driver.find_element_by_class_name (« login-box-actions »). Click ()« Пожалуйста, где я делаю ошибку?

Большое спасибо, с уважением, Дэвид

<div class="login-box-actions">
                    <a style="cursor: pointer" ng-click="confirmLogin()" class="btn btn-primary btn-block btn-flat ng-binding">Login</a>
                </div>

Ответы [ 3 ]

0 голосов
/ 05 мая 2020

Вам нужно щелкнуть элемент <a> вместо div:

login_button = driver.find_element_by_xpath("//a[text()='Login']")
login_button.click()
0 голосов
/ 05 мая 2020

Может произойти сбой, потому что элемент не найден. Для этого вам нужно дождаться, пока элемент загрузится и станет доступным для клика.

Обратитесь к следующему примеру, дождитесь, пока элемент станет кликабельным.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC


WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
    (By.CSS_SELECTOR, "btn btn-primary btn-block btn-flat ng-binding"))).click()
0 голосов
/ 05 мая 2020

Вы можете попробовать найти элемент, используя разные идентификаторы. Selenium поддерживает:

find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name * find_element_by_class_name * 100_element_element

...