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來的,其中編碼的地方如果是引號,請全部用英文符合