RobotFramework_4.SeleniumLibrary操作(二)


 

SeleniumLibrary的使用


在開始這部分課程之前,我們需要一個附件網頁用來演示以下操作:
請下載以下附件,保存到到電腦某個位置:

文件上傳

如果我們按照用戶的操作來上傳文件,步驟會非常繁瑣,而且操作系統的文件夾操作需要另一個庫AutoItLibrary的支持,來對操作系統窗口定位和操作,非常麻煩。
這里我們有一個更好的選擇,分析上傳文件按鍵的html代碼,它實質上是一個<input>元素。

那么我們可以直接對它input text,輸入的文本就是文件的路徑。

需要注意的是:在Python或Java中的路徑表達式中,windows的\要被替換為\\或者/
因為Java或Python中,\是轉義字符,單\毫無意義

alert警告框操作

我們在訪問網站的時候,有時會突然彈出一個小窗口,上面寫着一段提示信息文字。如果你不點擊“確定”,就不能對網頁做任何操作,這個小窗口就是使用alert實現的。
這個alert的彈出由前端的JS語句決定,但是彈出框本身卻不是網頁代碼的一部分,而是由瀏覽器彈出,所以我們無法對這個彈出框進行定位和直接Click操作。

SeleniumLibrary這里可以使用Handle Alert關鍵字來處理

Handle Alert

作用:處理alert彈出框 參數:兩個可選參數action和timeout,action默認為ACCEPT,timeout默認為None
ACCEPT:接受alert警告,相當於點擊OK或確定
DISMISS:取消alert警告,相當於點擊Cancel或取消
LEAVE:離開alert警告,保持alert為打開

timeout設置等待alert彈出的時間,如果不單獨設置,會使用全局的timeout設置
此關鍵字是seleniumLibrary3.0新出現的,取代以前的Choose XXX On Next Confirmation
Alert彈出框有三種分別是alert(只有確定鍵),confirm(有確定和取消兩個按鍵),prompt(除開兩個按鍵還有一個輸入框)

下拉菜單操作

下拉菜單在網頁中是<select>元素

下拉菜單未展開的時候,菜單中的選項無法click,我們操作下拉菜單有兩種方式:
一種是模擬用戶的操作,先click下拉菜單,再click展開的菜單選項
另一種就是使用seleniumLibrary提供的關鍵字來操作下拉菜單:
Select From List By Index
-- index:<option>選項的index索引值,注意第一項從0開始
Select From List By Label
-- lable:<option>選項中對應文本值
Select From List By Value
-- value:<option>選項中對應value屬性值

注意:如果是單選下拉菜單,多於一項有相同值時,最后一項將被選中
如果是多選下拉菜單,多於一項有相同值時,多項將被選中,但是可能之前選中的選項不會被清除

單選框RadioBox和復選框CheckBox操作

單選框RadioBox的操作比較簡單,直接按照用戶邏輯,要選哪項直接click就可以了

復選框CheckBox的操作稍微麻煩一點,麻煩不在點擊動作本身,而是復選框是可以取消點擊的。
第一次點擊是選中,第二次點擊是取消,所以在點擊之前最好確定被點擊的選項是否已經被選中。

模擬按鍵Press Key

在網頁操作中有時會遇到需要翻頁,或者發送鍵盤按鍵,這時就需要用到關鍵字:
Press Key
作用:對定位元素模擬用戶按鍵
參數:兩個必選參數locator定位符和key按鍵
key:按鍵可以是一個字母、或者\開始的按鍵的ASCII碼值

如果是對整個網頁模擬按鍵,建議使用根元素xpath:/html
\ue0f是python中pageDown下翻頁按鍵碼值的unicode編碼,其它按鍵的編碼參考下圖:


網頁內嵌網頁frame/iframe切換

frame和iframe都是網頁的內嵌網頁,當我們遇到某些元素位於frame或者iframe時,如果不對操作的當前頁面進行切換,講無法操作這些元素。
例如這個網站: https://www.layui.com/admin/std/dist/views/

在這個頁面中,如果我們要操作右側的元素,必須先將內嵌的iframe切換為當前頁面,否則無法點擊。
這里我們需要用到一個關鍵字:

Select Frame

作用:切換定位符定位的頁面為當前頁面
參數:一個必選參數,frame的定位符

但是,如果這時我們又要操作左側面板的元素,會發現又不能操作了,這是因為我們的操作當前頁面是右側頁面,這時我們需要把當前頁面切換回主頁面

Unselect Frame

作用:切換主頁面為當前頁面
無參數

注意切換網頁要分析網頁結構,使用select frame只能往當前網頁的下級頁面切換,所以往上或者往平級的頁面切換必須先unselect frame

瀏覽器窗口切換

當我們點擊鏈接彈出一個新的瀏覽器窗口時,我們在新的瀏覽器窗口操作需要手動切換瀏覽器窗口。

Select Window

作用:切換瀏覽器窗口到定位符匹配的窗口
參數:一個參數locator默認為MAIN
返回值:前一個窗口的handle

如果定位的窗口被找到,所有隨后的操作將基於這個新定位的窗口,直到這個關鍵字再次被調用。
如果定位的窗口找不到,這個關鍵字失敗,前一個窗口的handle已被返回,可以用來返回前一個窗口。

窗口的定位策略:
- 默認情況下,窗口定位符匹配窗口的handle,name,title,URL,匹配會按照這個順序匹配第一個符合的窗口。
- 窗口定位符可以具體使用顯式的定位策略,使用格式: strategy:value (推薦) or strategy=value支持的策略有:name,title和URL
- 定位符為NEW,最后一個打開的窗口被切換。如果與當前窗口相同將會報錯。
- 定位符為MAIN,主窗口被選中。
- 定位符為CURRENT,沒什么作用,只是返回當前窗口的的handle。
- 定位符不是一個字符串時,必須是一個被排除的窗口handle list。這個list應該是之前使用Get Window Handles獲取的。

這里使用http://news.baidu.com/,點擊第一個到第四個新聞鏈接,來做一個切換窗口的演示。

strategy:value參數只在seleniumLibrary3.0或之后版本支持 之前版本支持的別名:None,Null和空字符串用來切換主窗口,和別名selft切換當前窗口,在3.0版本都過時了
在3.0之前版本匹配窗口的name,title和URL曾是大小寫敏感的

 

 


免責聲明!

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



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