1. 程式人生 > >selenium+Python自動化處理時間控制元件

selenium+Python自動化處理時間控制元件

嘗試編寫12306網站查詢餘票資訊的自動化指令碼時,碰到日期選擇的問題,此處做一下記錄:

  最初打算直接定位,但發現2017-09-30這一天實在沒什麼特點,雖然也可以根據父元素的特徵屬性層層定位,然後選擇其下的第多少個child元素,但是感覺會有問題,過一天之後,這個child元素就不是30號了,與初衷不符,於是網上查找了解決辦法,看到有說去掉這裡時間框的readonly屬性,直接用輸入的辦法是用send_keys解決,所有碰到的時間選擇,都可以通過這種方式解決,深以為然,然後試了一下,果然可以,這裡把方法記下來:

方法一:原生js,移除readonly屬性

js = "document.getElementById('train_date').removeAttribute('readonly')"

方法二:jQuery,移除readonly屬性

js = "$('input[id=train_date]').removeAttr('readonly')"

方法三:jQuery,設定屬性為false

js = "$('input[id=train_date]').attr('readonly',false)"

方法四:jQuery,設定屬性為空

js = "$('input[id=train_date]').attr('readonly',’ ‘)"

然後,

driver.execute_script(js)
driver.find_element_by_id('train_date').clear()
driver.find_element_by_id('train_date').send_keys('2017-09-30')

問題解決!

注:此文章內容參考huilan_same的csdn部落格,但筆者有實際嘗試過,確實可行,感謝huilan_same提供的方法。

原文地址:http://blog.csdn.net/huilan_same/article/details/52385401