【问题标题】:Using Python + Selenium to click on next page with while loop使用 Python + Selenium 通过 while 循环单击下一页
【发布时间】:2017-04-22 15:18:18
【问题描述】:

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

我的代码如下所示:

 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

提前致谢!

【问题讨论】:

    标签: javascript python selenium cookies


    【解决方案1】:

    由于每次切换到下一页时都会自动滚动,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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多