學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這個模組了,這個時候就會有疑惑,為什麼昨天可以...