Вам необходимо применить явное ожидание и дождаться, пока элемент появится на странице, а затем вы можете щелкнуть по нему.
Вы также можете сначала прокрутить до элемента, а затем щелкнуть по нему.
Вы можете сделать это следующим образом:
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