selenium+Python自動化處理時間控制元件
阿新 • • 發佈:2019-01-30
嘗試編寫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