Selenium2Library庫安裝與配置
selenium是一款用於Web應用程序測試的工具,它支持多平台、多語言、多瀏覽器去實現自動化測試。
針對robot framework的庫有兩個:SeleniumLibrary和Selenium2Library。SeleniumLibrary是針對Selenium1.0開發的,Selenium2Library是針對Selenium2.0開發的。我們直接安裝Selenium2Library即可。
Selenium2Library庫安裝:
安裝方式一:pip install robotframework-selenium2library==3.0.0 聯網安裝
pip install --upgrade robotframework-selenium2library --升級
pip uninstall robotframework-selenium2library --卸載
安裝方式二:壓縮包下載:下載地址https://pypi.python.org/pypi/robotframework-selenium2library然后解壓,通過python setup.py install 安裝
webdriver安裝:
Windows操作系統把對應瀏覽器的driver.exe文件放置到放到/python27/scripts目錄下即可。
瀏覽器操作API
Selenium2Library庫中的關鍵字可以通過按F5,然后選擇Source下拉框中的Selenium2Library庫,即可查看所有Selenium2Library的關鍵字和幫助信息。
常用的關鍵字如下:
open browser:打開瀏覽器
瀏覽器對應的關鍵字:
谷歌瀏覽器:chrome googlechrome gc
火狐瀏覽器:firefox ff
IE瀏覽器:ie internetexplorer
close browser:關閉當前瀏覽器
close all browsers:關閉所有瀏覽器和緩存重置
maximize browser window:瀏覽器最大化
set window size :設置瀏覽器寬、高
get window size :獲取瀏覽器寬、高
go back :瀏覽器進行回退操作
reload page:頁面重新加載,即頁面刷新操作
get title:獲取當前瀏覽器窗口的標題
get location:獲取當前URL
元素識別工具與定位API
元素識別工具:
Firebug
Firebug是網頁瀏覽器 Mozilla Firefox下的一款開發類插件,它集HTML查看和編輯、Javascript控制台、網絡狀況監視器於一體,是開發 JavaScript、CSS、HTML和Ajax的得力助手。
安裝Firebug:
Mozilla Firefox菜單--附加組件--插件--搜索Firebug--安裝--重啟瀏覽器
chrome和IE的開發者工具
chrome 瀏覽器自帶開發者工具,瀏覽器右上的小扳手,在下拉菜單中選擇“工具”--“開發者工具” 即可打開,也可以使用快捷鍵Ctrl+Shift+I或者F12.
IE瀏覽器從IE8版本開始,加入了開發人員工具,通過菜單欄“工具”--“開發人員工具”或者通過快捷鍵F12即可打開。
元素定位API:
Selenium2Library提供了非常豐富的元素定位器,如下所示:
示例:
用戶名文本框
百度新聞鏈接
新聞
1.通過id定位對象:
2.通過name定位對象:
- 通過link定位對象:
xpath定位:
xpath是一種在XML文檔中定位元素的語言。因為HTML可以看作是XML的一種形式,selenium可使用這種強大語言在web應用中定位元素。Xpath有7種定位元素的方式:
1、通過絕對路徑做定位
XPath的開頭是一個斜線(/)代表這是絕對路徑。
/html/body/div[3]/div[1]/div/div[3]/a[2]
2、通過相對路徑做定位
如果開頭是兩個斜線(//)表示文件中所有符合模式的元素都會被選出來,即使是處於樹中不同的層級也會被選出來。
//div[1]/div/div[3]/a
3、通過元素索引定位 ,索引的初始值為1
//div[3]/a[2] 定位文件中第2個a對象
4、使用屬性定位
//a[@name=‘tj_trnews’]
//a[@name=‘tj_trnews’ and @class=‘mnav’]
//a[@name=‘tj_trnews’ or @class=‘mnav’]
5、使用部分屬性值匹配
starts-with()
//a[starts-with(@name,‘tj_trnews’)]
ends-with()(XPath1.0中沒有ends-with函數,2.0有,現在瀏覽器實現的都是1.0)
可以用如下代替:
//a[substring(@name,string-length(@name)-5)=‘trnews’]
contains()
//a[contains(@name,'trnews')]
6、使用任意屬性值匹配元素
//[@=‘tj_trnews’]
7、使用xpath的text函數
//a[text()=‘新聞’]
//a[contians(text(),'新聞')]")) 包含(模糊)匹配
CssSelector定位:
CSS locator比XPath locator速度快,特別是在IE下面(IE沒有自己的XPath 解析器(Parser))他比xpath更高效更准確更易編寫,但根據頁面文字時略有缺陷沒有xpath直接。CssSelector有6種定位元素的方式:
1、使用絕對路徑來定位元素。CSS絕對路徑指的是在DOM結構中具體的位置,使用絕對路徑來定位用戶名輸入字段,在使用絕對路徑的時候,每個元素之間要有一個空格。
html body div div div div form span input
這種策略有一定的局限性,如果界面的布局改變了,那么可能就定位不到我們想要的元素了
2、 使用相對路徑來定位元素
當使用CSS選擇器來查找元素的時候,我們可以使用class屬性來定位元素,我們可以先指定一個HTML的標簽,然后加上一個”.”符合,跟上class屬性的值
div a.mnav
3、定位下個節點:
div a.mnav + a
.mnav 找界面所有className為mnav的元素
4、列表選擇具體的匹配
Selenium中的CSS選擇器允許我們更細致的瀏覽列表下的元素,如圖,我想選擇第三行鏈接,可以用nth-of-type或者nth-child
div a[class=‘mnav’]:nth-of-type(3)
div a[class=‘mnav’]:nth-child(3)
5、 使用相對ID選擇器來定位元素
可以使用元素的ID來定位元素,先指定一個HTML標簽,然后加上一個”#”符號,跟上id的屬性值
input#kw #kw
這種方法也是會找界面所有id=kw的元素,不一定能定位到我們要的元素上
6 、使用屬性值選擇器來定位元素
通過指定元素中屬性值來定位元素
單屬性:a[name=‘tj_trnews’]
多屬性:a[name=‘tj_trnews’][class=‘mnav’]
7、部分屬性值的匹配
CSS選擇器提供了一個部分屬性值匹配定位元素的方法,這為了測試那些頁面上具有動態變化的屬性的元素是非常有用的,例如界面技術EXTJS的id,className是動態變化的。
匹配前綴:^= 匹配后綴:$=
匹配字符串:*=
a[name^=‘tj_’][class=‘mnav’]
常用CSS定位語法如下:
元素操作API
input text:輸入文本
click button/click element:點擊按鈕/點擊元素
sumbit form: 表單提交,要求對象必須是表單,或者為空
clear element text:清空元素內容
get text:獲取元素文本內容
get element attribute : 獲取元素屬性
get element size:獲取元素尺寸
設置等待相關API
為了保證腳本的穩定性,有時候需要引入等待時間,等待頁面加載元素后再進行操作,robot framework提供多種等待時間設置方式。
固定時間等待:
sleep:固定時間等待
隱式等待:可以在一個時間范圍內等待,且是識別元素的全局設置。
set browser implicit wait:隱式等待,針對當前瀏覽器生效
set selenium implicit wait:隱式等待,針對所有打開的瀏覽器都生效
顯示等待:針對單一元素在時間范圍內達到條件的等待,也有相應的否定用法
wait until element contains:直到元素包含指定的text才結束等待
wait until element is enabled:直到元素可以使用才結束等待
wait until element is visible:直到元素可見才結束等待
其它等待:也有相應的否定用法
wait until page contains:直到當前頁面出現指定的text才結束等待
wait until page contains element:直到當前頁面出現指定的元素才結束等待
wait for condition:當滿足條件時結束等待,條件是帶返回布爾值的js腳本
等待相關API寫法示例:
其它操作API
定位frame中的對象:
select frame:定位frame中的對象,進入到frame(表單),參數是id、name屬性,或者是xpath識別元素的值。
unselect frame: 退出frame(表單)
原生js彈窗(alert/confirm/prompt)的處理:
handle alert :操作原生彈窗並且可以返回彈窗的消息內容
下拉框處理:
Select From List By Value:通過value屬性去選擇下拉框的值
Select From List By Index:通過索引去選擇下拉框的值,索引從0開始
Select From List By Label:通過可見文本屬性去選擇下拉框的值
執行Javascript腳本:
當robotframework遇到無法完成的操作時候,這個時候可以使用javascript來完成,robotframework提供了API來調用js代碼執行。
Execute JavaScript:執行js腳本
瀏覽器多窗口處理:
在進行自動化測試過程中,過程中會出現跳轉到新窗口繼續執行操作的情況,robotframework可以通過如下API處理:
Select window:跳轉到指定窗口,參數可以是title、URL、handle、NEW、MAIN
其中NEW為最新打開的窗口、MAIN為回到主窗口
Get window Handles:獲取所有窗口的句柄,返回一個list
鼠標鍵盤事件API
鼠標鍵盤事件:
Mouse Down:模擬鼠標在指定的元素上按下鼠標左鍵
Mouse Up:模擬鼠標在指定的元素上釋放鼠標左鍵
Mouse Over:模擬移動鼠標懸停在指定的元素上
Mouse Out:模擬移動鼠標遠離指定的元素
Double Click Element:在指定的元素上進行雙擊操作
Press key:實現在元素上進行按鍵操作 ,參數可以 是單個字符、字符串、ascii碼的值(作為參數需要加上 \)
斷言API
系統斷言API:
should Be Empty:判斷是否為空,如果是空,斷言成功
Should Be Equal:判斷是否相等,如果相等,斷言成功
Should Be True:判斷條件是否為真,如果條件為真,斷言成功
Should Contain:判斷是否包含,如果包含,斷言成功
Should Start With:判斷字符串是否以指定的值開頭,如果是,斷言成功
Should End With:判斷字符串是否以指定的值結尾,如果是,斷言成功
length Should Be:判斷對象的長度是否是指定值,如果是,斷言成功
Selenium斷言API:
Page Should Contain:頁面是否包含指定的文本內容
Page Should Contain Element:頁面是否包含指定的元素,相類似的還有Button、Checkbox、Image、Link、List、Radio Button、Textfield,如下圖舉例:
備注:
Element\List\Textfield的元素定位信息必須寫完整
其余可以只用寫id、name等的值,不需要寫定位的屬性名
Limit參數表示元素出現的次數,none為默認,表示出現即可;如果是2,必須出現2次
Loglevel表示日志級別,共有4個選項:DEBUG, INFO (default), WARN和 NONE,如果
設置成WARN,只會打印WARN以及該級別以上的信息。
Element Should Contain:元素的text是否包含指定的內容(可以是部分內容)
Element Should Be Visible:判斷元素是否可見,相類似的還有Focused(選中)、Enabled(啟用)
Alert Should Be Present:是否出現彈出窗
Checkbox Should Be Selected:復選框是否已經被選中