为啥这个硒直到结束才点击“下一页”?
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
按钮
【讨论】:
以上是关于为啥这个硒直到结束才点击“下一页”?的主要内容,如果未能解决你的问题,请参考以下文章