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
上面那樣太麻煩,我有很多語句那咋辦?
恭喜你,那只能自己封裝關鍵字了,正好練習下封裝技能!