簡體   English   中英

Python Selenium 無法點擊下一頁按鈕

[英]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')

還有你的elementicon 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM