Селен не может найти класс - PullRequest
0 голосов
/ 22 апреля 2020

Итак, у меня проблема с поиском класса при использовании селена, я перепробовал все, что мог, чтобы успешно найти атрибут класса и выполнить что-то с ним, например:

driver.find_element_by_tag_name('div button')
driver.web.find_element_by_class_name('btn-secondary-md save-button ng-binding')

Код Образец:

<button class="btn-secondary-md save-button ng-binding" ng-click="$ctrl.showChangeOwnerModal()" ng-bind="'Label.ChangeOwner' | translate">Change Owner</button>

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Скорее всего, вы столкнулись с проблемой из-за синхронизации, вы всегда можете использовать WebDriverWait, чтобы избежать проблемы синхронизации.

решение 1:

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "btn-secondary-md save-button ng-binding")))

решение 2:

wait = WebDriverWait(driver,30)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(text(),'Change Owner')]")))

Примечание: Пожалуйста, добавьте следующие импорта в ваше решение

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

Если проблема не устранена, проверьте, что ваш элемент находится в iframe, если да, то вам нужно переключить управление на iframe.

0 голосов
/ 22 апреля 2020

Попробуйте найти с помощью css селектора:

driver.find_element_by_css_selector('button.btn-secondary-md.save-button.ng-binding')

Если вы все еще получаете какую-то ошибку, например, элемент не активируется, попробуйте использовать явное ожидание на веб-элементе.

...