Selenium python時間控制元件輸入問題解決方案
對於時間的選擇問題,查到的大部分為兩種情況:
1.存在readonly屬性的
2.沒有readonly屬性的
可直接賦值send_keys()
測試用例中剛好是沒有readonly屬性的
且定位不到彈窗(通過查資料可知道,直接給時間控制元件input屬性賦值是最快捷的方法)
一開始都是奔著情況二去處理的,但一直執行不成功,總是在賦值的地方出錯,反覆確認了不存在iFrame,控制代碼也都是一樣的,時間控制元件為input屬性,且是可編輯屬性,但就是總報錯。
判斷是否可編輯的指令為:
flag=timeInput.is_enabled()
print("時間控制元件是否可編輯: "+str(flag))
執行結果如下:
後來嘗試用情況一的方法進行處理,但因為查到的資料裡,賦值語句有點問題(可能不適合自己的用例),由於一直沒考慮到查到的語句本身有問題,導致最後還是卡死在賦值上面。還好在別的地方看到正確的賦值語句,修改了賦值語句後就正常了
具體分解步驟如下:
步驟一:修改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)
完整流程如下(已測試通過的,為了方便呼叫,部分有做了封裝):
執行結果可看出,時間可正常輸入
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。