Исключение ElementClickInterceptedException: перехвачен щелчок элемента. Другой элемент получит щелчок: Selenium Python

#python #python-3.x #selenium #selenium-webdriver #automation

Вопрос:

Я видел другие вопросы об этой ошибке, но мой случай таков, что в моей программе другой элемент должен получить щелчок. Подробнее: веб-драйвер просматривает поиск Google и должен нажимать на каждый веб-сайт, который он находит, но программа предотвращает это. Как я могу заставить его НЕ искать предыдущий сайт, на который он перешел?

Это и есть функция. Программа зацикливает его, и после первого цикла он прокручивается вниз, и возникает ошибка:

 def get_info():
browser.switch_to.window(browser.window_handles[2])
description = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "h3"))
).text

site = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "cite"))
)
site.click()

url=browser.current_url
#removes the https:// and the / of the url
#to get just the domain of the website
try:
    link=url.split("https://")
    link1=link[1].split("/")
    link2=link1[0]
    link3=link2.split("www.")
    real_link=link3[1]

except IndexError:
    link=url.split("https://")
    link1=link[1].split("/")
    real_link=link1[0]

time.sleep(3)
screenshot=browser.save_screenshot("photos/" "("   real_link   ")"   ".png")
global content
content=[]
content.append(real_link)
content.append(description)
print(content)
browser.back()
time.sleep(5)
browser.execute_script("window.scrollBy(0,400)","")
time.sleep(5)
 

Ответ №1:

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

 clicked_website=[]

url=browser.current_url
clicked_website.append(url)

# Now while clicking
if <new_url> not in clicked_website:
    <>.click()
 

Это всего лишь идея, как ее реализовать. Ваш код-это беспорядок, я не совсем понял, так что внедряйте его в свой код самостоятельно.