有关 selenium 的问题,单击链接

avwztpqn  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(126)

当我试图点击Curry的PC World电视页面中的Next Page链接时,我遇到了一个奇怪的问题,那就是使用Python Selify。请参阅(https://www.currys.co.uk/tv-and-audio/televisions/tvs)上的下一步按钮
我用Chrome在非Headless模式下进行了测试,所以当点击时,我可以看到Next按钮的轮廓被高亮显示,但它不会像预期的那样导航到下一个页面URL。
以下是我在上面的页面上尝试过的:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import NoSuchElementException
import time

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.set_window_size(1920, 1080)
driver.maximize_window()

driver.get('https://www.currys.co.uk/tv-and-audio/televisions/tvs')

next_page_link = WebDriverWait(driver, 10).until(
                 ec.element_to_be_clickable((By.CSS_SELECTOR, 
                                            'ul.pagination '
                                            'li.pagination-arrrow-next a.page-next')))
next_page_link.click()

time.sleep(10)

我还尝试使用执行脚本(这也不起作用):

driver.execute_script('arguments[0].click()', next_page_link)

我能够从link元素中提取href(因此我知道它是正确的元素):

href = next_page_link.get_attribute('href')
print("href is: {}".format(href))

# href is: https://www.currys.co.uk/tv-and-audio/televisions/tvs?start=20&sz=20

我有点不知道这里可能出了什么问题,如果有任何帮助,将不胜感激!

fbcarpbf

fbcarpbf1#

我在这里看到了以下问题:
1.您必须关闭Accept Cookie弹出窗口。
1.您需要将页面向下滚动到页面导航元素。
1.Selify确实不会使页面转到下一页即使我手动单击Next按钮,甚至手动单击任何其他分页按钮,页面也不会更改。因此,问题出在网页本身,而不是 selenium 。
这是我使用的代码:

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)
url = 'https://www.currys.co.uk/tv-and-audio/televisions/tvs'
driver.get(url)
wait = WebDriverWait(driver, 20)

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
next_page_link = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'ul.pagination li.pagination-arrrow-next a.page-next')))
next_page_link.location_once_scrolled_into_view
time.sleep(1)
next_page_link.click()

相关问题