日曆控件是web網站上常常會遇到的一個場景,有些輸入框是能夠直接輸入日期的,有些不能;以12306網站爲例,講解如何解決日曆控件爲readonly屬性的問題。web
基本思路:先用js去掉readonly屬性,而後直接輸入日期文本內容。網站
以下圖:spa
詳細代碼以下:15-21行是處理日曆控件的代碼code
1 from selenium import webdriver 2 import time 3 from selenium.webdriver.common.keys import Keys 4 5 # 打開12306首頁 6 driver = webdriver.Chrome() 7 driver.get('https://www.12306.cn/index/') 8 time.sleep(2) 9 # 出發地輸入地點 10 driver.find_element_by_xpath('//input[@id="fromStationText"]').click()#先點擊輸入框清空默認文本 11 driver.find_element_by_xpath('//input[@id="fromStationText"]').send_keys('濟南',Keys.ENTER)#輸入文本回車 12 # 到達地輸入地點 13 driver.find_element_by_xpath('//input[@id="toStationText"]').click()#先點擊輸入框清空默認文本 14 driver.find_element_by_xpath('//input[@id="toStationText"]').send_keys('上海',Keys.ENTER)#輸入文本回車 15 # 處理出發時間 16 # js去除readonly屬性 17 js = 'document.getElementById("train_date").removeAttribute("readonly")' 18 driver.execute_script(js) 19 # js添加時間 20 js_value = 'document.getElementById("train_date").value="2019-02-10"' 21 driver.execute_script(js_value)