#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()
Это всего лишь идея, как ее реализовать. Ваш код-это беспорядок, я не совсем понял, так что внедряйте его в свой код самостоятельно.