1. 程式人生 > >selenium之 時間日期控制元件的處理

selenium之 時間日期控制元件的處理

很多人問時間日期的空間怎麼處理,但是時間日期控制元件各種各樣,你可能遇到正常點的像這樣:
正常點的

當然也可能遇到難點的,像這樣:
困難的

當然,也不排除會遇到變態的,像這樣:
變態的

呵呵,真要一個個想著怎麼去選擇,簡直是非人類乾的事!

那麼該怎麼辦?

其實很簡單,我們不去搞時間日期空間,我們把它當成一個普通的input框處理就好了!

但是,很多此型別input框都是禁止手動輸入的,怎麼辦?

很簡單,用js把禁止輸入的readonly屬性幹掉就好了。

來吧,看一下示例:

程式碼:

# -*- coding: utf-8 -*-

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/'
) driver.switch_to.frame('iframe') # js = "document.getElementById('txtBeginDate').removeAttribute('readonly')" # 1.原生js,移除屬性 # js = "$('input[id=txtBeginDate]').removeAttr('readonly')" # 2.jQuery,移除屬性 # js = "$('input[id=txtBeginDate]').attr('readonly',false)" # 3.jQuery,設定為false js = "$('input[id=txtBeginDate]').attr('readonly','')"
# 4.jQuery,設定為空(同3) driver.execute_script(js) driver.find_element_by_id('txtBeginDate').send_keys('2016-08-24') sleep(2) print driver.find_element_by_id('txtBeginDate').get_attribute('value') driver.quit()

結果:

2016-08-24

看,我一下子給了你四種寫法。當然你去選也沒有問題,就是一堆div、ul、li,但是我想說對於日期時間控制元件,認真你就輸了,繞過去才是真理,就像驗證碼一樣,這個東西去深究,一點意義也沒有嘛,所以這裡就不推薦也不寫這種方法的示例了。

當然,這裡還得說一下,有人說他遇到的日期時間框沒有id、name,這裡提醒一下,這就是普通的input框,定位方法太多了,class、tag name、xpath、css,總有一種適合你。同時友情提醒一下:注意時刻提防iframe!

有什麼問題或者遇到什麼特殊的控制元件無法這樣處理,可以通過評論告訴我!