簡體   English   中英

使用python +硒單擊按鈕

[英]Clicking on button using python + selenium

我在python中使用硒訪問帶有鉻的名為iens的網站。 我希望我的腳本單擊“ Volgende”(在荷蘭語中表示“ Next”),以移至下一頁。 但是,我收到以下錯誤消息:

selenium.common.exceptions.WebDriverException: Message: unknown error:
Element is not clickable at point (853, 667). Other element would 
receive the click: <div class="cookiePolicy-content">...</div>

我猜想硒進入網站時彈出的cookie出了問題。 到目前為止,我還無法找出解決Cookie的方法。

到目前為止,我的代碼:

from selenium import webdriver

chrome_path = '/Users/username/Downloads/chromedriver'
driver = webdriver.Chrome(chrome_path)
driver.get('https://www.iens.nl/restaurant+utrecht')

link = driver.find_element_by_link_text("Volgende")
link.click()

這是網站: https : //www.iens.nl/restaurant+utrecht

是的,這是由於底部的cookie浮動頁腳。 Selenium將您的按鈕滾動到視圖中,但是它沒有意識到需要將其滾動到cookie浮動div上方。

我建議單擊cookie消息上的關閉按鈕,或者從cookie消息后面滾動出元素。

要關閉cookie,您將要單擊關閉並等待它消失:

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


chrome_path = '/Users/username/Downloads/chromedriver'
driver = webdriver.Chrome(chrome_path)
driver.get('https://www.iens.nl/restaurant+utrecht')

# Wait for cookie message
close_icon = WebDriverWait(driver, 5, 0.25).until(ec.visibility_of_element_located([By.CSS_SELECTOR, '.cookiePolicy-close']))
close_icon.click()
# Wait for cookie message to disappear
WebDriverWait(driver, 5, 0.25).until(ec.invisibility_of_element_located([By.CSS_SELECTOR, '.cookiePolicy-close']))
link = driver.find_element_by_link_text("Volgende")
link.click()

要從cookie消息后面滾動元素:

編輯:看來此頁面也有一個浮動的頂部標題,因此您實際上不能僅將其滾動到頁面頂部...您需要將其從cookie消息后面滾動出來。

from selenium import webdriver

chrome_path = '/Users/username/Downloads/chromedriver'
driver = webdriver.Chrome(chrome_path)
driver.get('https://www.iens.nl/restaurant+utrecht')

link = driver.find_element_by_link_text("Volgende")
# Scroll to element as Selenium would
driver.execute_script('arguments[0].scrollIntoView(false);', link)
# Then scroll it up to get it out from behind the message
driver.execute_script('window.scrollBy(0, 200)')
link.click()

編輯:我已經確認這兩個選項都可以

試試這個代替driver_find_element_by_link_text()

driver.find_element_by_xpath('//*[@id="pagination_results"]/div/div/ul/li[14]/a');

Selenium試圖模擬真實的用戶行為。 這意味着它只能單擊可見元素。 您需要將元素顯示在視圖中才能單擊它

link = driver.find_element_by_link_text("Volgende")
ActionChains(driver).move_to_element(link).perform()
link.click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM