我怎样才能让 Selenium 单击 "Next" 按钮直到它不再可能?
How can I make Selenium click on the "Next" button until it is no longer possible?
我想编写一个代码,使 Python 在页面上抓取一些数据,然后单击页面底部的 "next" 按钮,在第二个页面上抓取一些数据页面,单击 "next" 按钮等,直到最后一页,无法再单击 "Next"(因为没有 "next")。
我想让代码尽可能通用,而不是预先指定要完成的点击次数。
在这个问题 (How can I make Selenium click through a variable number of "next" buttons?) 之后,我有下面的代码。 Python 不报告任何错误,但程序在第一次迭代后停止(在第一次单击 "next" 之后)。
我在这里错过了什么?非常感谢!
driver = webdriver.Firefox()
driver.get("http://www.mywebsite_example.com")
try:
wait = WebDriverWait(driver, 100)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')))
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
while EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')):
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
if not driver.find_element_by_class_name("reviews_pagination_link_nav"):
break
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
finally:
driver.quit()
我会做一个无休止的 while True
循环并在抛出 TimeoutException
时中断它 - 这意味着没有页面可以离开:
wait = WebDriverWait(driver, 10)
while True:
# grab the data
# click next link
try:
element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
element.click()
except TimeoutException:
break
为此,您需要确保点击最后一页后,带有 class="reviews_pagination_link_nav"
的元素不在页面上或不可点击。
我想编写一个代码,使 Python 在页面上抓取一些数据,然后单击页面底部的 "next" 按钮,在第二个页面上抓取一些数据页面,单击 "next" 按钮等,直到最后一页,无法再单击 "Next"(因为没有 "next")。
我想让代码尽可能通用,而不是预先指定要完成的点击次数。 在这个问题 (How can I make Selenium click through a variable number of "next" buttons?) 之后,我有下面的代码。 Python 不报告任何错误,但程序在第一次迭代后停止(在第一次单击 "next" 之后)。
我在这里错过了什么?非常感谢!
driver = webdriver.Firefox()
driver.get("http://www.mywebsite_example.com")
try:
wait = WebDriverWait(driver, 100)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')))
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
while EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')):
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
if not driver.find_element_by_class_name("reviews_pagination_link_nav"):
break
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
finally:
driver.quit()
我会做一个无休止的 while True
循环并在抛出 TimeoutException
时中断它 - 这意味着没有页面可以离开:
wait = WebDriverWait(driver, 10)
while True:
# grab the data
# click next link
try:
element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
element.click()
except TimeoutException:
break
为此,您需要确保点击最后一页后,带有 class="reviews_pagination_link_nav"
的元素不在页面上或不可点击。