RF新手常見問題總結--(基礎篇)


RF新手常見問題總結--(基礎篇)

       學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/89


免責聲明!

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



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