學RF快一年了,常常碰到一些問題,有些同窗也常常問到,這裏總結一些,指望有人後續再補充,主要是響應羣裏--雪霽大神的號召,技術共享。廢話少說,直接上乾貨了。
1. 常常有人問這個元素找不到,通常先排除這兩個地方,再本身找找
A:是否等待了足夠的時間讓元素加載 (增長sleep xx, wait Until xxx)
B: 仔細查查,這個元素是否進入到另外一個frame了 (select frame xxx)
上面兩點都肯定了還不行,那改變下xpath的方法
下面的方法掌握了,基本上沒有找不到的。
C:xpath = //div[text()='web上顯示的文本'] 根據文本匹配
還有一文本先後可能有空格,特殊字符,能夠用部分文原本匹配
D:xpath = //div[contains(text(),'部分文本')]
E:還有找父節點的方法: ../ 這個本身去看看,會有收穫的。
2. 有同窗問:如何判斷這個元素disable,或者置灰了
用F12仔細看看元素灰了和沒灰,disable和enable的區別,基本都能看到有的屬性發生了改變, class的值多了或者少了checked, 或者disable等
通常這種我都用到 get element attribute關鍵字,以下獲取class的屬性
${class_value} Get Element Attribute xpath=//div[@id=’123’]@class
你再判斷 ${class_value}是否包含 disable,或者 check就能夠獲得其狀態了
3. 有人說:我這個log怎麼是亂碼
[ {‘dst': u'\u6cb3\u5317\u77012'}, {"xxx": "bbb"} ]
取出u'\u6cb3\u5317\u77012', 而後log就是中文了
4. 還有人問,我怎麼沒這個Get from Dictionary關鍵字,
實際上是你沒加載這些庫,我建議:新手必須加載的庫
BuiltIn RF系統內部的,最基礎的Run keyword xxx都在這裏
String 字符串處理的庫,文本處理必備
Collections 字典,列表的庫,必備
Selenium2Library web測試入門庫
OperatingSystem 操做windows系統命令,處理文件時要用到
AutoItLibrary 鼠標、鍵盤操做windows控件用這個
5. 還有人問個人數據庫獲取的怎麼是亂碼 ????? 一堆問號啥的
請在connect數據庫時增長 charset=utf8 (我沒弄過數據庫的自動化,這個是看雪霽大神回答他人後記錄下來的,還有其餘可能的亂碼,我不知道,請後續補充)
6. 還有人問,怎麼設置全局變量
咱們就談談RF變量的內部變量
${aaa} Set Variable haha 這個${aaa}是普通變量,就本case能用
Set suite variable ${aaa} 這個${aaa}就是測試suite變量
set global variable ${aaa} 全局變量${aaa},在哪都能傳
Set Test Variable ${aaa} (這個我還沒用到過)
7. 有人說,個人日誌輸出想改個路徑
在運行界面:Arguments右邊輸入框這樣寫 -l E:\Robot_log\smoke_test_log -r E:\Robot_log\smoke_test_report
-l 是log的路徑參數
-r 是report的路徑參數
若是還有其餘執行腳本的需求,請命令行pybot -? 本身看看,都在這裏
8. 還有人問:個人腳本assert,我還想繼續執行,不想停下來
用這個幾個,保證讓你停不下來的節奏。。。
Run Keyword And Return Status,
Run Keyword And Ignore Error
Run Keyword And Continue on Failure
9. 有新手常常問,個人瀏覽器怎麼打不開
這種有提示:你的chromedriver沒找到路徑,我就不說了。
若是沒這種提示的,基本就是你的ride,或者robotframework太舊了,還有就是你的瀏覽器版本過高了,
這種問題在道長常常在羣裏回答,我只是做爲記錄了,道長別找我要版權費哈。。。
10. 新手常見錯誤:If… Else if… Else 怎麼不行
這個確實是rf的坑,平時keyword都沒區分大小寫,可是這套IF語句必定要大寫。
還有比較的時候,${aaa} == ${bbb}報語法錯誤,
由於你比較的時候沒這樣 ‘${aaa}’ == ‘${bbb}’ (請加上英文的單引號)
11. 還有,我導入庫怎麼是紅色的
第一:請肯定你是用pip在線安裝的,其餘下載文件安裝極可能沒安裝好。
第二:請注意庫命的大小寫
第三,若是是你本身的自定義庫紅色,先運行下,看提示log,報錯誤在哪行,本身搞定語法錯誤
12. 這個彈出框怎麼處理
通常處理彈窗先增長等待,容錯處理
先用這個試試:Dismiss Alert
不行再用下面的
Choose Ok On Next Confirmation
Confirm action
順便:get alert message --- 獲取彈出窗的信息
13. 須要驗證提示信息,(提示輸入非法等等)用到鼠標懸停
Mouse Over xxx這樣鼠標就挺在那了
立刻去獲取提示信息,get text xxx
14. 日期控件怎麼辦,是否有關鍵字
RF沒有日期控件的關鍵字,(咱們是本身封裝的)。
最簡單的用js來執行 (我也不會js,找大家開發吧)
15. 這個下拉框我怎麼選不上。
在瀏覽器F12下拉框
【正規的長這樣 <option xxx> ,像下面這麼用:
Select from List xpath=//xxx/xxx 燈姐
Selct from List by value xxxx 螢草奶媽
非正規的下拉通常長這樣: <div xxxx >,
你就用下面方式
Click Element xpath = //xxx/div[2] ##先點下拉按鈕
Click Element xpath=//xxx/xxx//div[text()='坦克程咬金'] ##再點下拉框中的元素
16. 那種2選1的按鈕怎麼作
官方稱爲Radio Button,在RF的selenium庫中F5搜索 radio就有了
Select radio button xxx 男
17. 多選按鈕怎麼作
Select checkbox
18. Click Button點不到元素
能夠嘗試下: click element
19. 沒有這樣的關鍵字咋辦
沒錯,在你沒有辦法的時候,RF找來了他的經紀人「Python老宋」來幫忙。
Evaluate 後面接你的python代碼就能夠了。
20. 有人問:爲何個人IF … ELSE 跑到一行了,寫的時候我是分開了的。
這個不用擔憂,RF就是這樣自動的弄到一行了,不影響的。
21. 有人問:For循環怎麼寫?
就下面這樣寫,注意for前面有個冒號
:For ${i} IN RANGE 10
Log ${i} --- for循環內的語句在ride中前面要空一格
Log 循環能夠多行
22. 我寫了IF語句,RF中若是讓他執行多行關鍵字
對不起,rf的Run Keyword If語句後面不能像下面這樣:
Run Keyword If ‘xxx’ == ‘xxx’ 語句1
語句2 //這樣是不行的
語句3 //這樣是不行的
下面這樣是能夠的
Run Keyword If ‘xxx’ == ‘xxx’ 語句1
Run Keyword If ‘xxx’ == ‘xxx’ 語句2
Run Keyword If ‘xxx’ == ‘xxx’ 語句3
上面那樣太麻煩,我有不少語句那咋辦?
恭喜你,那隻能本身封裝關鍵字了,正好練習下封裝技能!哈哈。。。
【特別說明】
由於文檔是在word中寫了copy來的,其中編碼的地方若是是引號,請所有用英文符合
轉自:http://robotframework.net/?/article/89python