RobotFramework學習筆記-Web自動化


一、窗口關鍵字使用

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

*添加桌面快捷方式

右鍵pythonw.exe創建快捷方式,選擇【屬性】,在目標中輸入:
       C:\Python27\pythonw.exe --- 修改成自己的安裝目錄即可。
 
* 解決RIDE多次運行之后 不顯示日志log的方法
問題
在使用RIDE進行UI自動化測試時,會發現經常運行第二遍不顯示下方log
原因
代碼使用的是谷歌瀏覽器、IE瀏覽器測試,運行一次后chromedriver.exe,IEDriverServer.exe進程仍在運行中。
解決步驟:
直接使用python腳本kill
1、創建killie.py文件,寫入代碼,保存到python的安裝路徑下:C:\Python27\Lib\site-packages
import os
 
def close_process(self, process_name):
"""Close a process by processname."""
if process_name[-4:].lower() != ".exe":
process_name += ".exe"
os.system("taskkill /f /im " + process_name)

2、在RIDE腳本工程中 引用。推薦方式如下:

a、先創建資源文件:new resource , 再在此資源文件上右鍵,創建用戶關鍵字:new user keyword

 

b、在test suite 中引用,設置執行方式為:每次測試集執行完畢后調用

3、另外的一種更簡要寫法:

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


免責聲明!

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



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