1. 程式人生 > 程式設計 >Selenium python時間控制元件輸入問題解決方案

Selenium python時間控制元件輸入問題解決方案

對於時間的選擇問題,查到的大部分為兩種情況:

1.存在readonly屬性的

Selenium python時間控制元件輸入問題解決方案

2.沒有readonly屬性的

可直接賦值send_keys()

測試用例中剛好是沒有readonly屬性的

Selenium python時間控制元件輸入問題解決方案

且定位不到彈窗(通過查資料可知道,直接給時間控制元件input屬性賦值是最快捷的方法)

一開始都是奔著情況二去處理的,但一直執行不成功,總是在賦值的地方出錯,反覆確認了不存在iFrame,控制代碼也都是一樣的,時間控制元件為input屬性,且是可編輯屬性,但就是總報錯。

判斷是否可編輯的指令為:

flag=timeInput.is_enabled()
print("時間控制元件是否可編輯: "+str(flag))

執行結果如下:

Selenium python時間控制元件輸入問題解決方案

後來嘗試用情況一的方法進行處理,但因為查到的資料裡,賦值語句有點問題(可能不適合自己的用例),由於一直沒考慮到查到的語句本身有問題,導致最後還是卡死在賦值上面。還好在別的地方看到正確的賦值語句,修改了賦值語句後就正常了

具體分解步驟如下:

步驟一:修改readonly屬性

#下面四種方法,任選一種即可

js = "document.getElementById('dateRange_w3').removeAttribute('readonly')" # 1.原生js,移除屬性
#js = "$('input[id=dateRange_w3]').removeAttr('readonly')" # 2.jQuery,移除屬性

#js = "$('input[id=dateRange_w3]').attr('readonly',false)" # 3.jQuery,設定為false
#js="$(input[id=dateRange_w3]).attr('readonly','')"

步驟二:執行

driver.execute_script(js)

步驟三:清空時間輸入框: clear()

步驟四:賦值

jsValue= 'document.getElementById("dateRange_w3").value="2018-11-12 至 2018-11-13"'[/code][code]driver.execute_script(jsValue)

完整流程如下(已測試通過的,為了方便呼叫,部分有做了封裝):

Selenium python時間控制元件輸入問題解決方案

Selenium python時間控制元件輸入問題解決方案

執行結果可看出,時間可正常輸入

Selenium python時間控制元件輸入問題解決方案

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。