一、窗口關鍵字使用
1、當前瀏覽器彈出新的窗口
使用Select Window和Close Window處理彈出窗口。實際使用中Select Window不一定會一次選中,通常會結合Wait Until Keyword Succeeds一起使用。關閉主窗口時要先選擇Select Window Main才可以進行操作。
注:在Select Window時,會遇到模態窗口,這種窗口不一定能直接選擇到,可以通過handle操作窗口的關鍵字,select window by handle(通過handle選擇window);get window handles(獲取當前線程所有窗口的handles,返回List);get current window handle(獲取當前窗口的handle)
2、重新打開一個新的瀏覽器
Open Browser打開2個瀏覽器,用Switch Browser來進行切換,參數是打開瀏覽器indes順序或alias別名,關閉所有瀏覽器用Close All Browsers。
3、Frame
select frame 和 unselect frame,若遇到元素在頁面中但找不到,就要看看是不是在frame或iframe里,先select frame選擇操作,再回到frame外操作費其他元素,就要unselect frame出去。(注:進去的時候要一層層的進入,出來的時候直接就出來了,若要再對第二層或第一層進行操作就要重新進入)
二、Element
1、press key模擬鍵盤操作,“press key\\13”模擬回車。
2、Assign id to element 若一個對象沒有id,可以給它指定一個id
3、AutoItLibrary鼠標操作mouse down,mouse up,mouse over,mouse out
4、Get horizontal position、get vertical position用來獲取當前對象的左上角頂點距離整個頁面的橫坐標和縱坐標。
5、獲取頁面元素,get value、get text,若要獲取元素的其他屬性值則用get element attribute關鍵字,如class值,get element attribute element_id@class來獲取
三、formelement
checkbox(select checkbox和unselect checkbox復選框的勾選),radio buttons(select radio button關鍵字),text fields(choose file(用於上傳文件的時候選擇文件)、input text、input password(日志上不會把密碼打印出來)),button.form直接有關的關鍵字就一個submit form用於提交表單的
四、SelectElement
列表框:單選、多選,選擇列表框中的某一項,需要使用select from list,select from list by index、select from list by value、select from list by label。多選框全部選擇可以用select all from list。若想知道列表框里都有什么列表項,可以用get list items來獲取所有列表項。
五、tableElement
get table cell,click element at table cell、click link at table cell用於點擊表格指定單元格里的元素和鏈接。get index in table column和get index in table row用來獲取某個文本在表格的哪一行哪一列。
六、JavaScript
execute JavaScript和execute async JavaScript(異步執行,在函數最后加上回調來返回結果,若超時時間內沒有執行完成則會失敗)用於執行JavaScript腳本。
confirm action自動進行對話框的確認,若要點擊取消,則先用choose cancel on next confirmation進行設置,再用confirm action。恢復點同意,同樣先要choose ok on next confirmation。
七、screenshot
只有一個關鍵字capture page screenshot,對當前頁面進行截圖(截圖是基於當前瀏覽器的頁面進行的,若此時頁面被關閉了,就無法使用了,可用RF自帶的截圖庫里的方法進行截圖)。
八、waiting
wait for condition、wait until page contains、wait until page contains element,一般用BuiltIn里的關鍵字Wait Until Keyword Succeeds較多。
其他:
處理上傳文件,點擊瀏覽按鈕
Choose File file ${CURDIR}${/}text.tar
${file} Get Value file
*自定義方法放在D:\Python27\Lib\site-packages下,然后在Test Suite處導入即可使用。
*運行時報錯:unexpected error: C:\Users\nick\AppData\Local\Programs\Python\Python36-32\python.exe: Error while finding module specification for 'robot.run' (ModuleNotFoundError: No module named 'robot'),去Python安裝目錄Python27\Scripts下將 pybot.bat中 python -m robot.run %* 改成 python2 -m robot.run %* 可通過,因為同時安裝了Python2和Python3
*添加桌面快捷方式
2、在RIDE腳本工程中 引用。推薦方式如下:
a、先創建資源文件:new resource , 再在此資源文件上右鍵,創建用戶關鍵字:new user keyword
b、在test suite 中引用,設置執行方式為:每次測試集執行完畢后調用
1)RFT引入OperatingSystem類庫;
2)新建一個關鍵字,例“CloseDriverserver”
3) 在“CloseDriverserver”輸入內容:
${RunOutput} Run taskkill /F /IM chromedriver.exe
4)在Case的TearDown中填寫“CloseDriverserver”關鍵字。
*問題處理:
UnicodeEncodeError中文異常
robotframework中代碼執行時報UnicodeEncodeError
解決方案:
在python安裝目錄下的Lib下創建一個sitecustomize.py,內容如下:
#encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
重新啟動python后生效
*jquery定位
要是用jquery 關鍵字定位,前提是 該網站引用了jquery.min.js文件,如果沒有執行則報錯。
WebDriverException: Message: unknown error: jQuery is not defined
處理方法,直接動態掛馬(放在頁面加載之后的步驟,需要等5s時間),注意需要聯網,因為引用的是外網地址。
關鍵字: Execute Javascript
參數:
a = window.document.createElement('script');a.src='https://code.jquery.com/jquery-3.3.1.min.js';window.document.body.appendChild(a);
*上傳文件,通過windows打開本地文件,首先需要安裝AutoItLibrary,在此之前確認已安裝pywin32,否則先要安裝pywin32才可以正常安裝,若本機為64位,還需要安裝AutoIt(安裝時選擇...64...)
以下是測試代碼:
OpenB https://www.gaoding.com/clip?
sleep 3
Click element xpath=//*[@id="app"]/div[1]/div[1]/div/div[7]/label #打開上傳界面
${if_visible_upload} Run Keyword And Return Status Element Should Contain [CLASS:Static; INSTANCE:2] 文件名 #判斷是否包含‘文件名’並返回狀態
Run Keyword If ${if_visible_upload} =='true' click button [CLASS:Button; INSTANCE:1]
sleep 1
Control Send 打開 ${empty} [CLASS:Edit; INSTANCE:1] E:\\Photo\\1.jpg
Control Click 打開 ${empty} [CLASS:Button; INSTANCE:1] left
close all browsers