Python Selenium найдите кнопку с помощью innterHTML и нажмите ее - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь найти следующую кнопку и нажать на нее:

<div id="subText" class="btn btn-success">Subscribe</div>

Я уже пытался найти кнопку со следующим:

driver.find_element_by_css_selector('div.btn.btn-success').click()

но я получаю следующую ошибку:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div id="subText" class="btn btn-success">...</div> is not clickable at point (408, 513). Other element would receive the click: <div class="delete-overlay white" style="">...</div>

Есть ли способ найти только кнопку с текстом "Подписаться" и щелкнуть по ней?


Edit: Я обнаружил, что следующий элемент блокирует нажатие кнопки:

<svg class="svg-inline--fa fa-spinner-third fa-w-16 fa-spin fa-4x" aria-hidden="true" data-prefix="fas" data-icon="spinner-third" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"></path></svg>

Есть ли способ подождать / остановить сценарий, пока элемент / сценарий не исчезнет и продолжится?

Я также пытался дождаться появления кнопки «Подписаться», но это не сработало:

sbutton = expected_conditions.presence_of_element_located((By.CSS_SELECTOR, 'div.btn.btn-success'))
WebDriverWait(driver, timeout_limit).until(sbutton)

1 Ответ

0 голосов
/ 04 мая 2019

Согласно сообщению <div class="delete-overlay white" style="">...</div> перекрывается, поэтому сценарий не может нажать кнопку <div id="subText" class="btn btn-success">Subscribe</div>.

Вот варианты действий в этой ситуации.

1) Использование JavaScript:

ele = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "'div.btn.btn-success")))
driver.execute_script("arugments[0].click()",ele)

2) Прокрутка до элемента

ele = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "'div.btn.btn-success")))
ele.location_once_scrolled_into_view # this will scroll to the element
ele.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...