硒单击下一页按钮,直到消失

时间:2020-05-01 22:24:00

标签: python selenium-webdriver

我有一个网站,我要在该网站上单击“下一页”,直到到达最后一个不再存在“下一页”按钮的位置。我已经成功删除了我需要的所有元素的第一页,并且找到了按钮。我可以使代码变得像丑陋的代码一样难堪,而control-c control-v再次与for循环相同,我正在寻找更好的方法

try:
    for x in range (len(price)):
        print(price[x].text, location[x].text, area_size[x].text)
except (NoSuchElementException, StaleElementReferenceException):
    print("QUITTING!")
    driver.quit()
except TimeoutException:
    driver.quit()

next_page_button.click()
time.sleep(10)

try:
    for x in range (len(price)):
        print(price[x].text, location[x].text, area_size[x].text)
except (NoSuchElementException, StaleElementReferenceException):
    print("QUITTING!")
    driver.quit()
except TimeoutException:
    driver.quit()

这确实有效,但我必须单击14个下一页按钮,然后按钮才会更改。.还有一种更简单的方法来创建带有if条件的foor循环

next_page_button.size = 0(我想它到达了最后一页)我的for循环停止了吗?

1 个答案:

答案 0 :(得分:0)

您可以有一个无限的while循环,不断单击下一页按钮,然后在找不到按钮时中断循环。

try:
    while True:
        for x in range (len(price)):
            print(price[x].text, location[x].text, area_size[x].text)
        next_page_button.click()
        time.sleep(10)
except (NoSuchElementException, StaleElementReferenceException):
    print("QUITTING!")
    driver.quit()
except TimeoutException:
    driver.quit()

此外,您可以实现WebDriverWait对象,而不是简单地添加10秒的等待页面加载时间。一旦目标元素已加载,或直到超时,此操作将继续。此处更多信息:https://pythonbasics.org/selenium-wait-for-page-to-load/