为啥这个硒直到结束才点击“下一页”?

Posted

技术标签:

【中文标题】为啥这个硒直到结束才点击“下一页”?【英文标题】:Why does this selenium not click "next page" until end?为什么这个硒直到结束才点击“下一页”? 【发布时间】:2017-07-01 21:00:57 【问题描述】:

我正在为 Upwork 网站编写抓取代码,并且需要单击每个页面以查看工作列表。这是我使用 selenium 进行网络爬取的 python 代码。

from bs4 import BeautifulSoup
import requests
from os.path  import basename
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.upwork.com/o/jobs/browse/c/design-creative/")


link = driver.find_element_by_link_text("Next")
while EC.elementToBeClickable(By.linkText("Next")):
    wait.until(EC.element_to_be_clickable((By.linkText, "Next")))
    link.click()

【问题讨论】:

您需要提供更多详细信息。它什么时候停止工作?当它停止时会发生什么? 【参考方案1】:

有几个问题:

    EC 没有属性 elementToBeClickable。在Python 你应该使用element_to_be_clickable 您的link 仅在第一页上定义,因此在第二页上使用它应该会给您StaleElementReferenceException

    您的代码中没有定义wait 变量。我猜你的意思是像

    wait = WebDriverWait(driver, 10)
    

    By 没有属性 linkText。改用LINK_TEXT

尝试使用下面的代码来获得所需的行为

from selenium.common.exceptions import TimeoutException
while True:
    try:
        wait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, Next"))).click()
    except TimeoutException:
        break

这应该允许您在可用时单击Next 按钮

【讨论】:

以上是关于为啥这个硒直到结束才点击“下一页”?的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 点击下一页直到最后一页

为啥我不能运行程序直到游戏结束

pyplot 直到代码结束才会绘制 [重复]

阻止实时点击事件,直到该功能没有结束?

基维 |直到程序结束屏幕才会改变

WEB 小案例 -- 网上书城