ElementNotInteractable Исключение: Сообщение: Элемент не может быть прокручен в представлении - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь нажать и загрузить «Реальный сектор» по следующей ссылке: http://www.sbp.org.pk/reports/quarterly/fy19/Second/qtr-index-eng.htm

Вот что я пробовал:

driver.get('http://www.sbp.org.pk/reports/quarterly/fy19/Second/qtr-index-eng.htm')
try:
    driver.find_element_by_css_selector("a[href= 'Chap-2.pdf']").click()

except NoSuchElementException:
    pass

Но он выдает следующую ошибку:

ElementNotInteractableException: Сообщение: Элемент не может быть прокручен в представление

Как я могу решить эту проблему?

Ответы [ 3 ]

1 голос
/ 24 марта 2020

Вам необходимо применить явное ожидание и дождаться, пока элемент появится на странице, а затем вы можете щелкнуть по нему.
Вы также можете сначала прокрутить до элемента, а затем щелкнуть по нему.
Вы можете сделать это следующим образом:

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

driver.get('http://www.sbp.org.pk/reports/quarterly/fy19/Second/qtr-index-eng.htm')
try:
    element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//a[@href='Chap-2.pdf']")))
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.click()

except NoSuchElementException:
    pass

ИЛИ

Вы можете напрямую щелкнуть по элементу, используя скрипт java click click как:

driver.get('http://www.sbp.org.pk/reports/quarterly/fy19/Second/qtr-index-eng.htm')
try:
    element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//a[@href='Chap-2.pdf']")))
    driver.execute_script("arguments[0].click();", element)

except NoSuchElementException:
    pass
0 голосов
/ 24 марта 2020

Чтобы щелкнуть по ссылке "Real Sector" Индуцировать WebDriverWait() и element_to_be_clickable () и следующую опцию xpath.

driver = webdriver.Chrome()
driver.get('http://www.sbp.org.pk/reports/quarterly/fy19/Second/qtr-index-eng.htm')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'Real Sector')]"))).click()

Вам необходимо импортировать следующие библиотеки.

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

Снимок браузера после нажатия.

enter image description here

0 голосов
/ 24 марта 2020

Попробуйте подождать, используйте element_to_be_clickable

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href= 'Chap-2.pdf']")))
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...