Selenium自動化測試(七)之js處理日期控件


Selenium自動化測試(八)之js處理控件操作

像上面這種使用了日期控件,並且輸入框是設置的只讀,在做自動化的時候,對於這種我們該如何去做呢?

1、模擬人工點開控件選擇日期(不建議使用)

2、跳過該控件,直接輸入日期

顯然上面兩種方式,第一種是相當麻煩不實用的,第二種則是很簡便,下面我們來看下如何跳過日期控件:

一、在谷歌瀏覽器“開發者工具中”的可控制台Console操作處理日期控件

查看元素屬性(通過xpath進行的元素定位)

bdata = document.evaluate("//label[contains(text(),'出生日期')]//following::input[1]", document).iterateNext()

刪除元素只讀屬性,使得輸入框正常輸入內容

bdata.removeAttribute("readonly")

不更改屬性值,使用value給輸入框賦值

bdata.value="2020-10-23"

直接添加一個value屬性

bdata.setAttribute('value','2020-05-01')

二、在Python中處理日期控件

刪除元素屬性值,添加value值

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.removeAttribute(\"readonly\");
    bm.value=\"2020-05-01\""""
driver.execute_script(js)

直接添加輸入內容

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.value=\"2020-05-01\""""
driver.execute_script(js)

直接添加一個value屬性

js = """var bm = document.evaluate(\"//label[contains(text(),'出生日期')]//following::input[1]\", document).iterateNext();
    bm.setAttribute('value','2020-05-01')"""
driver.execute_script(js)

我的這個元素定位使用的是XPATH(因為沒有id/class/name這些簡單的,不然我也不會用這么復雜的),當然,你可以選擇id/class/name等進行元素定位(如果有的話)。

這種方法不僅適用於日期控件,還可以適用於所有只讀的輸入框和別的控件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM