[英]Python Selenium can't click on next page button
我想點擊下一頁,直到沒有更多頁面,但它沒有點擊。
返回錯誤:引發異常類(消息,屏幕,堆棧跟蹤)
StaleElementReferenceException:陳舊的元素引用:元素未附加到頁面文檔
我的代碼:
提前致謝!
driver.get('http://www.chinamoney.com.cn/chinese/zjfxzx/?tbnm=%E6%9C%80%E6%96%B0&tc=null&isNewTab=1')
driver.implicitly_wait(10)
driver.refresh()
driver.implicitly_wait(10)
wait = WebDriverWait(driver, 5)
datefield_st = wait.until(EC.element_to_be_clickable((By.ID, "pdbp-date-1")))
datefield_st.click()
select_st = Select(wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "ui-datepicker-year"))))
select_st.select_by_visible_text("2021")
select2 = Select(wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "ui-datepicker-month"))))
select2.select_by_value("1")
day=1
wait.until(EC.element_to_be_clickable((By.XPATH, "//td[@data-handler='selectDay']/a[text()='{}']".format(str(day))))).click()
datefield_ed = wait.until(EC.element_to_be_clickable((By.ID, "pdbp-date-2")))
datefield_ed.click()
select_ed = Select(wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "ui-datepicker-year"))))
select_ed.select_by_visible_text("2021")
select2 = Select(wait.until(EC.element_to_be_clickable((By.CLASS_NAME, "ui-datepicker-month"))))
select2.select_by_value("1")
day=1
wait.until(EC.element_to_be_clickable((By.XPATH, "//td[@data-handler='selectDay']/a[text()='{}']".format(str(day))))).click()
driver.find_element_by_link_text("查詢").click()
while True:
driver.implicitly_wait(10)
links=[link.get_attribute('href') for link in driver.find_elements_by_xpath("//a[contains(@title,'同業存單') and not(contains(@title,'申購說明')) and not(contains(@title,'公告'))]")]
titles = [title.text for title in driver.find_elements_by_xpath("//a[contains(@title,'中期票據') and not(contains(@title,'申購說明')) and not(contains(@title,'公告'))]")]
dates = [date.text for date in driver.find_elements_by_xpath('//*[@class="san-grid-r text-date"]')]
driver.implicitly_wait(10)
for link, title,date in zip(links, titles,dates):
dataframe = pd.DataFrame({'col1':date,'col2':title,'col3':link},index=[0])
dataframe.to_csv('Chinamoney.csv',mode='a+',header=False,index=False,encoding='utf-8-sig')
print(link,title,date)
try:
driver.find_element_by_xpath('//*[contains(@class, "page-next")]').click()
except:
print('No more pages')
您將兩個 class 名稱傳遞給選擇器,但不允許按 class 名稱進行搜索。 要么嘗試
(By.CLASS_NAME, 'page-next')
或者
(By.CSS_SELECTOR, '.page-btn.page-next')
還有你的element
和icon
select 相同的元素。 所以你不需要定義icon
。 只需使用element.click()
您正在使用:
driver.find_element_by_xpath('//*[contains(@class, "page-next")]').click()
嘗試:
element = driver.find_element_by_xpath('//*[contains(@class, "page-next")]')
driver.execute_script("arguments[0].click();", element)
如果這不起作用,您可以嘗試獲取 url/link 值並存儲它,稍后您可以 go 到 url 或做您想做的事而無需單擊它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.