繁体   English   中英

使用Python + Selenium在while循环中单击下一页

[英]Using Python + Selenium to click on next page with while loop

我正试图在名为iens的网站上浏览不同的页面。 我正在使用selenium + python点击“volgende”(在荷兰语中意为“下一个”),但是我希望我的程序继续点击下一个,直到没有剩下的页面使用while循环。 所以在这种情况下,我希望我的程序在第23页结束。现在我可以通过关闭cookie弹出消息,等到它关闭然后点击“Volgende”按钮到达第2页。

我的代码看起来像这样:

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

 chrome_path = '/Users/user/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']))

 click_icon = WebDriverWait(driver, 5, 
 0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 
 'Volgende']))
 click_icon.click()

该网站名为https://www.iens.nl/restaurant+utrecht

提前致谢!

由于每次切换到下一页时自动滚动, webdriver尝试单击“ Next按钮,但其他一些元素会收到单击。 您可以使用此解决方案:

while True:
    try:
        click_icon = WebDriverWait(driver, 5, 0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 'Volgende']))
        click_icon.click()
        WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])')))
    except:
        break

另一个简单的解决方案(仅当您的目标是到达最后一页时)是获取最后一页而不是一直单击“ Next ”:

driver.find_elements_by_xpath('//div[@class="pagination"]/ul/li/a')[-2].click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM