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

2021-08-07 15:56:12 字數 4490 閱讀 1579

學rf快一年了,經常碰到一些問題,有些同學也經常問到,這裡總結一些,期望有人後續再補充,主要是響應群裡--雪霽大神的號召,技術共享。廢話少說,直接上乾貨了。

1. 經常有人問這個元素找不到,一般先排除這兩個地方,再自己找找

a:是否等待了足夠的時間讓元素載入 (增加sleep xx, wait until ***)

b:  仔細查查,這個元素是否進入到另乙個frame了 (select frame ***)

上面兩點都確定了還不行,那改變下xpath的方法

下面的方法掌握了,基本上沒有找不到的。

c:xpath = //div[text()='web上顯示的文字']  根據文字匹配

還有一文字前後可能有空格,特殊字元,可以用部分文本來匹配

d:xpath = //div[contains(text(),'部分文字')]

e:還有找父節點的方法: ../ 這個自己去看看,會有收穫的。

2. 有同學問:如何判斷這個元素disable,或者置灰了

用f12仔細看看元素灰了和沒灰,disable和enable的區別,基本都能看到有的屬性發生了改變, class的值多了或者少了checked, 或者disable等

一般這種我都用到 get element attribute關鍵字,如下獲取class的屬性

$  get element attribute xpath=//div[@id=』123』]@class

你再判斷 $是否包含 disable,或者 check就可以得到其狀態了

3. 有人說:我這個log怎麼是亂碼

[ , ]

取出u'\u6cb3\u5317\u77012', 然後log就是中文了

4. 還有人問,我怎麼沒這個get from dictionary關鍵字,

其實是你沒載入這些庫,我建議:新手必須載入的庫

builtin             rf系統內部的,最基礎的run keyword ***都在這裡

string              字串處理的庫,文字處理必備

collections        字典,列表的庫,必備

selenium2library     web測試入門庫

operatingsystem     操作windows系統命令,處理檔案時要用到

autoitlibrary     滑鼠、鍵盤操作windows控制項用這個

5. 還有人問我的資料庫獲取的怎麼是亂碼 ????? 一堆問號啥的

請在connect資料庫時增加 charset=utf8 (我沒弄過資料庫的自動化,這個是看雪霽大神回答他人後記錄下來的,還有其他可能的亂碼,我不知道,請後續補充)

6. 還有人問,怎麼設定全域性變數

我們就談談rf變數的內部變數

$  set variable haha        這個$是普通變數,就本case能用

set suite variable  $     這個$就是測試suite變數

set global variable  $   全域性變數$,在哪都能傳

set test variable   $   (這個我還沒用到過)

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. 有新手經常問,我的瀏覽器怎麼打不開

如果沒這種提示的,基本就是你的ride,或者robotframework太舊了,還有就是你的瀏覽器版本太高了,

這種問題在道長經常在群裡回答,我只是作為記錄了,道長別找我要版權費哈。。。

10. 新手常見錯誤:if…  else if… else 怎麼不行

這個確實是rf的坑,平時keyword都沒區分大小寫,但是這套if語句一定要大寫。

還有比較的時候,$ == $報語法錯誤,

因為你比較的時候沒這樣 『$』 == 『$』  (**上英文的單引號)

11. 還有,我導入庫怎麼是紅色的

第二:請注意庫命的大小寫

第三,如果是你自己的自定義庫紅色,先執行下,看提示log,報錯誤在哪行,自己搞定語法錯誤

12. 這個彈出框怎麼處理

一般處理彈窗先增加等待,容錯處理

先用這個試試:dismiss alert

不行再用下面的

choose ok on next confirmation

confirm action

順便:get alert message --- 獲取彈出窗的資訊

13. 需要驗證提示資訊,(提示輸入非法等等)用到滑鼠懸停

mouse over ***這樣滑鼠就挺在那了

馬上去獲取提示資訊,get text  ***

14. 日期控制項怎麼辦,是否有關鍵字

rf沒有日期控制項的關鍵字,(我們是自己封裝的)。

最簡單的用js來執行 (我也不會js,找你們開發吧)

15. 這個下拉框我怎麼選不上。

在瀏覽器f12下拉框

【正規的長這樣 ,像下面這麼用:

select from list xpath=//***/***  燈姐

selct from list by value  ***x   螢草奶媽

非正規的下拉一般長這樣: ,

你就用下面方式

click element xpath = //***/div[2]   ##先點下拉按鈕

click element xpath=//***/***//div[text()='坦克程咬金']    ##再點下拉框中的元素

16. 那種2選1的按鈕怎麼做

官方稱為radio button,在rf的selenium庫中f5搜尋 radio就有了

select radio button  ***   男

17. 多選按鈕怎麼做

select checkbox

18. click button點不到元素

可以嘗試下: click element

19. 沒有這樣的關鍵字咋辦

沒錯,在你沒有辦法的時候,rf找來了他的經紀人「python老宋」來幫忙。

evaluate 後面接你的python**就可以了。

20. 有人問:為什麼我的if … else 跑到一行了,寫的時候我是分開了的。

這個不用擔心,rf就是這樣自動的弄到一行了,不影響的。

21. 有人問:for迴圈怎麼寫?

就下面這樣寫,注意for前面有個冒號

:for  $  in range  10

log  $ --- for迴圈內的語句在ride中前面要空一格

log  迴圈可以多行

22. 我寫了if語句,rf中如果讓他執行多行關鍵字

對不起,rf的run keyword if語句後面不能像下面這樣:

run keyword if   『***』 == 『***』  語句1

語句2  //這樣是不行的

語句3  //這樣是不行的

下面這樣是可以的

run keyword if   『***』 == 『***』  語句1

run keyword if   『***』 == 『***』  語句2 

run keyword if   『***』 == 『***』  語句3

上面那樣太麻煩,我有很多語句那咋辦?

恭喜你,那只能自己封裝關鍵字了,正好練習下封裝技能!哈哈。。。

【特別說明】

因為文件是在word中寫了copy來的,其中編碼的地方如果是引號,請全部用英文符合

以上我只是總結了群裡的常見問題,不少問題都是群裡的大神答案,拿來獻醜了。

感謝我的rf老師--雪霽大神的指導和幫助! 祝雪霽女神永遠的顏值擔當!

再次感謝雪霽女神!!! 

新手 常見問題

4.c風格字串與標準庫型別string不分 int i char ch cchars 這是c風格字串,結尾有 0 char mch mchars string str ch string類的建構函式接收ch,並作轉化 i strcmp ch,str error,有人喜歡把string類作引數輸入到s...

python 新手常見問題

1 python 三元運算子 無,用 if else 2 python 設定 縮排 全選。然後按tab 3 記錄程式執行時間 import time time start time.time time end time.time print totally cost time end time st...

nodejs新手常見問題

關鍵字 cannot find nodejs 問題的出現 使用nodejs時,當我們書寫完 第二天重新開啟檔案執行時,可能會出現報錯現象,如 error cannot find module semver 通過提供的錯誤資訊可以解讀出是找不到semver這個模組了,這個時候就會有疑惑,為什麼昨天可以...