Wpf UI框架 MaterialDesign 的使用記錄
阿新 • • 發佈:2021-12-01
在UI的自動化測試中,我們也是需要使用JS來處理一些特殊的互動,比如針對瀏覽器的滑動操作,
以及針對富文字的特殊處理,和針對只讀屬性的時間控制元件的處理。下面通過實際的案例來演示這部分的
具體應用和案例實戰。
瀏覽器的滑動
瀏覽器的滑動主要分為瀏覽器的向上和向下,比如我們就以百度搜索引擎為案例,我們進行關鍵
字的搜尋後,想點幾下一步的操作,但是下一步無法展示出來,就需要把頁面滑動到底部才可以展示
出來。下面通過實際的案例來演示下這部分的具體應用
from selenium import webdriver import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') so=driver.find_element_by_id('kw').send_keys('qwertyuiop') t.sleep(5) so=driver.find_element_by_id('su').click() t.sleep(5) #向下滑動 down="var q=document.documentElement.scrollTop=10000" driver.execute_script(down) t.sleep(5) #向上滑動 up="var q=document.documentElement.scrollTop=0" driver.execute_script(up) t.sleep(5) #點選下一頁 driver.find_element_by_link_text('下一頁 >').click() t.sleep(5) driver.quit()
富文字
現在網際網路的產品基本都會使用到富文字的資訊,針對富文字的特性,其實我們有兩個思路來
實現元素的定位方式,一種是iframe的思路,另外一種是JS的方式。如下具體顯示富文字的資訊
js方式
from selenium import webdriver import time as t def richText(driver,content): ''' 實現在富文本里面輸入內容 :param driver: webdriver例項化後的物件資訊 :param content: 富文本里面需要輸入的文字內容 :return:''' js="document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='{0}'".format(content) driver.execute_script(js) driver=webdriver.Chrome() driver.get('https://uutool.cn/ueditor/') t.sleep(5) richText(driver=driver,content='晨黎是最最最好的') t.sleep(5) driver.quit()
iframe
driver=webdriver.Chrome() driver.get('https://uutool.cn/ueditor/') t.sleep(5) # 進入iframe框架 driver.switch_to.frame('ueditor_0') t.sleep(3) driver.find_element_by_xpath('/html/body/p').send_keys('晨黎天下第一') t.sleep(5) driver.quit()
時間控制元件
在如上的程式碼中可以很清晰的看到它是隻讀屬性,那麼我們需要填寫時間的屬性,具體解決問題的步驟為:
1、取消時間控制元件的只讀屬性
2、取消只讀屬性後,操作input控制元件的value,我們知道input裡面輸入的內容最終是在value的屬性裡面。
下面通過具體的程式碼來實現這部分,實現在時間控制元件中填寫我們想選擇的時間,具體實現的程式碼為:
from selenium import webdriver import time as t def startTime(driver,content): '''開始時間控制元件''' js="$(\"input[placeholder='開始時間≥當前時間']\").removeAttr('readonly');" \ 取消制只讀屬性 "$(\"input[placeholder='開始時間≥當前時間']\").attr('value','{0}')".format(content) driver.execute_script(js) def endTime(driver,content): '''結束時間控制元件''' js="$(\"input[placeholder='結束時間>開始時間']\").removeAttr('readonly');" \ 取消只讀屬性 "$(\"input[placeholder='結束時間>開始時間']\").attr('value','{0}')".format(content) driver.execute_script(js) driver=webdriver.Chrome() driver.get('file:///C:/Users/%E5%88%92%E8%88%B9%E4%B8%8D%E9%9D%A0%E6%B5%86%E9%9D%A0%E6%B5%AA/Desktop/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9%20(2)/Time/index.html') t.sleep(5) startTime(driver=driver,content='2021-12-05 00:00:00') t.sleep(3) endTime(driver=driver,content='2021-12-06 11:00:00') t.sleep(3) driver.quit()