python selenium 日期控制項定位

2022-07-02 02:15:05 字數 2321 閱讀 8377

在做自動化時經常會遇到各種各樣的時間選擇框(如下圖),那麼如何去精準選擇想要的時間呢?

如果需要乙個乙個去點選,那肯定非常不穩定,也很難去選擇時間跨度大的日期和精準日期。

這個時候我們就需要用到萬能的js了,一般日期框都是唯讀屬性,通過js將唯讀屬性去掉,就可以直接 send_keys()輸入時間即可

這裡給個示例

# 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')

但是一般的日期輸入框很少有id屬性,document一共有這幾種查詢方式(見下圖),可以在console除錯,如果能找到即可將唯讀屬性去掉

但是如果通過以上方式都無法找到,該怎麼處理呢?

我們可以通過 addattribute 或者 setattribute 給日期新增元素屬性,再使用js將唯讀屬性去掉即

def addattribute(self, selector, attributename, value):

'''封裝向頁面標籤新增新屬性的方法

呼叫js給頁面標籤新增新屬性,arguments[0]~arguments[2]分別

會用後面的element,attributename和value引數進行替換

新增新屬性的js**語法為:element.attributename=value

比如input.name='test'

'''ele = self.find_element(selector)

self.driver.execute_script("arguments[0].%s=arguments[1]" % attributename, ele, value)

#補充說明

#ele:元素定位

#attributename:設定屬性名

#value:設定屬性值

完整**實現

def send_create_time(self):

"""輸入建立時間"""

#給日期控制項新增id屬性並移除唯讀屬性

self.addattribute(data['create_time'], 'id', 456789)

js = "document.getelementbyid('456789').removeattribute('readonly')"

self.execute_script(js)

return self.find_element(data['create_time']).send_keys('2020/11/15 00:00:00 - 2020/12/15 00:00:00')

補充說明:

有些使用send_keys()輸入時間但是提交請求的時候發現並沒有傳參時間,這個可能是輸入的時間格式不對,可以在頁面上手動除錯,將唯讀屬性去掉並傳送請求,如果介面有傳參說明可以。

不行的話可以先手動選擇時間在複製貼上即可

上圖我輸入非時間格式介面請求是沒有傳時間引數的,所以要保證傳參正確

Python Selenium環境搭建

安裝python 設定 python 的環境變數 安裝目錄 安裝目錄 scripts 使用 pip安裝 selenium pip install selenium 安裝完python pip工具,在安裝目錄的 scripts 目錄下。在 dos下直接執行 pip install selenium 即...

Python Selenium 學習筆記

1 判斷元素是否存在 try driver.find element.xx a true except a false if a true print 元素存在 elif a false print 元素不存在 2 判斷元素是否顯示 driver.find element by id outputb...

Python Selenium錯誤小結

因為要使用web應用,所以開始用起了,selenium包,安裝倒是挺容易的,但就是出了很多bug。filenotfounderror winerror 2 系統找不到指定的檔案。通過錯誤反饋發現是要把該軟體加到路徑裡面,但是,設定了系統環境變數後發現還是不行,最後,使用了乙個非常原始的方法 brow...