定位示例
RF關鍵字 | 定位 | 內容 |
Input Text | id=kw1 | robotframework |
Input Text | name=wd | robotframework |
Click Button | id=su1 | |
Input Text | css=[name=wd] | rf |
Input Text | xpath = //span[@class=’bg s_ipt_w’]/input |
Xpath定位
定位 | 講解 | |
Xpath絕對路徑 | xpath=/html/body/div[1]/div[4]/span[1]/input | |
Xpath相對路徑 | xpath=//*[@id='kw1'] | 某個層級下,屬性為id=kw1的元素 |
xpath=//input[@type='text'] | 標簽名為input的且屬性type=text的元素 | |
xpath = //form[@id=’form1’]/span/input | 根據容易定位的上級元素開始找 | |
xpath = //input[@id=’kw1’ and @name=’wd’] | 同時擁有兩個屬性的標簽 | |
xpath = //input[@id=’kw1’ or @name=’wd’] | 擁有屬性A的標簽或者擁有屬性B的標簽 |
CSS定位
選擇器 | 例子 | 講解 |
.class | .intro | 選擇class=”intro“的所有元素 |
#id | #firstname | 選擇id="firstname"的所有元素 |
* | * | 選擇所有元素 |
element | p | 選擇所有<p>元素 |
element,element | div,p | 選擇所有<div>元素和所有<p>元素 |
element element | div p | 選擇 <div> 元素內部的所有 <p> 元素 |
element>element | div>p | 選擇父元素為 <div> 元素的所有 <p> 元素 |
element+element | div+p | 選擇緊接在 <div> 元素之后的所有 <p> 元素,相鄰關系 |
[attribute] | [target] | 選擇帶有 target 屬性所有元素 |
[attribute=value] | [target=_blank] | 選擇 target="_blank" 的所有元素 |
[attribute~=value] | [title~=flower] | 選擇 title 屬性包含單詞 "flower" 的所有元素 |
[attribute|=value] | [lang|=en] | 選擇 lang 屬性值以 "en" 開頭的所有元素 |
selenium2library的API
關鍵字 | 輸入的值 | 操作平台 | 其他 | 備注 | |
Open Browser | 完整的url | chrome | chrome:googlechrome/gc/chrome IE:internetexplorer/ie firefox:ff/firefox Opera:opera Android:android Iphone:iphone Safari:safari 要想通過不同的瀏覽打開URL地址,一定要安裝瀏覽器相對應的驅動。如chrome 的驅動: chromedriver.exe 等。瀏覽器默認為空時啟動FireFox |
||
Close Browser | 關閉瀏覽器 | ||||
Close All Browsers | 關閉所有瀏覽器 | ||||
Maximize Browser Window | 使當前打開的瀏覽器全屏 | ||||
Get Window Size | 800 | 600 | 以像素為單位,第一個參數800表示寬度,第二個參數600表示高度 | ||
Input Text | Xpath=//* [@] | 輸入信息 | 文本輸入 | ||
Click Element | Xpath=//* [@] | 點擊元素 | |||
Click Button | Xpath=//* [@] | 點擊按鈕 | |||
choose file | xpath=//* [@] | C:\\Do\\bug5.png | 上傳圖片文件 | ||
Comment | 注釋說明 | 注釋一 | |||
# 注釋說明 | 注釋二 | ||||
Sleep | 42 | 固定休眠多長時間,以“秒”為單位 2 minutes 10 seconds 表示2分10秒 |
|||
Wait Until Page Contains Element | Xpath=//* [@] | 42 | error | Xpath=//* [@] :表示元素定位,這里定位出現的元素,42表最大等待時間 error表示自定義錯誤提示,如:元素不能正常顯示 |
|
Get Title | 獲得當前瀏覽器窗口的title 信息 | ||||
Get Text | Xpath=//* [@] | 獲取文本信息,定位文本信息的元素 | |||
Get Element Attribute | id=kw@name | 獲取元素元素屬性值,id=kw 表示定位的元素。@nam 獲取這個元素的name屬性值 | |||
get cookies | 獲得當前瀏覽器的所有cookie | ||||
get cookie value | Key_name | 獲取cookie的值,key_name 表示一對cookie中key的name | |||
delete cookie | Key_name | 刪除cookie,刪除key為name 的cookie信息 | |||
delete all cookies | 刪除當前瀏覽器的所有cookie | ||||
add cookie | Key_name | Value_name | 添加一對cooke (key:value) | ||
${a} | Set Variable | hello | 定義變量a為hello | ||
${a} | ${b} | Set Variable | hello | world | 定義變量a為hello ,b為world |
log | ${a} | 在測試報告中輸出a變量的值 | |||
${width} | ${height} | get window size | 獲得瀏覽瀏覽器窗口寬、高,通過log 將寬高,打印到報告中 | ||
log | ${width} | ||||
log | ${height} |
selenium2library的API高級
備注 | |||||
驗證 | |||||
open browser | http://www.baidu.com | chrome | Open Browser 通過chrome打開百度首頁 | ||
${title} | Get Title | Get Title 獲得瀏覽器窗口的titile ,並賦值給變量${title} | |||
Should Contain | ${title} | 百度一下,你就知道 | Should Contain 比較${title}是否等於“百度一下,你就知道” | ||
嵌套 | |||||
Select Frame | Xpath=//* [@] | 進入表單,Xpath=//* [@] 表示定位要進入的表單 | |||
Unselect Frame | 退出表單 | ||||
下拉框 | |||||
Unselect From List By Value | Xpath=//* [@] | vlaue | 定位下拉框,Vlaue 選擇下拉框里的屬性值 | ||
IF分支語句 | |||||
${a} | Set variable | 2 | 定義兩個變量a ,b 分別為 2 和5 | ||
${b} | Set variable | 5 | |||
run keyword if | ${a}>=1 | log | a大於1 | If 判斷 a 大於等於1 ,滿足條件log 輸出 “a大於1 ” | |
... | ELSE IF | ${b}<=5 | log | b小於等於5 | 不滿足上面的條件,接着else if 判斷b小於等於5 ,滿足條件log 輸出 “b小於等於5” |
... | ELSE | log | 上面兩個條件都不滿足 | 上面兩個條件都不滿足,else log輸出“上面兩個條件都不滿足” | |
for循環語句 | |||||
:FOR | ${i} | in range | 10 | 循環變量i 從0 到9 循環10次 | |
log | ${i} | 輸出到log | |||
for循環語句 | |||||
@{a} | create list | aaa | bbb | @{a} 定義為一個字符串列表。通過in 可遍歷非整型(in range) |
|
:FOR | ${i} | in | @{a} | Log 、if 分支,for 循環並非selenium關鍵字庫的提供的方法,是由BuiltIn包提供 | |
log | ${i} |
關鍵字驅動
如“open browser” 就是一個關鍵字。從底層去看它就是一個通過編程去現實的一個方法。
def open_browser(url,browser):
#通過browser找到相應的瀏覽器驅動,調用瀏覽器,借助python的httplib、urllib模塊將url傳遞給瀏覽器。從而實現open brwoser 的目的。
上面的偽代碼表述的“關鍵字”的底層其實還是程序定義的方法。
把操作步驟封裝一個一個的方法(關鍵字),通過調用關鍵字來實現測試用例。
定位單個元素 | 定位多個元素 |
find_element_by_id | find_elements_by_name |
find_element_by_name | find_elements_by_xpath |
find_element_by_xpath | |
find_element_by_link_text | |
find_element_by_partial_link_text | |
find_element_by_tag_name | |
find_element_by_class_name | |
find_element_by_css_selector |
size 獲取元素的尺寸
text 獲取元素的文本
get_attribute(name) 獲取屬性值
location 獲取元素坐標,先找到要獲取的元素,再調用該方法
page_source 返回頁面源碼
driver.title 返回頁面標題
current_url 獲取當前頁面的URL
is_displayed() 設置該元素是否可見
is_enabled() 判斷元素是否被使用
is_selected() 判斷元素是否被選中
tag_name 返回元素的tagName
set window size :設置瀏覽器寬、⾼
get window size :獲取瀏覽器寬、⾼
go back :瀏覽器進⾏回退操作
reload page:頁面重新加載,即頁面刷新操作
get title:獲取當前瀏覽器窗⼝的標題
get location:獲取當前URL?