iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Software Development

QA 三十天養成日記系列 第 17

[Day17][Web 自動化] Robot framework 教學,新手無痛起步!讓你的小專案成為完整體吧!

  • 分享至 

  • xImage
  •  

透過前兩篇的介紹後
相信已經對 Robot framework 有一定的認識了
所以我們將結合前一篇的 [Web 自動化] Robot framework 基本常見的 Keywords 用法及語法 內容,並修改優化 [Web 自動化] Robot framework 新手實作小專案,帶你快速進入自動化測試 的 code

這次我們增加一些限制,提高一點點的難度

  • 不能使用 FOR
  • 不能模擬鍵盤操作

Code Sample

*** Settings ***
Library    Selenium2Library

Suite Setup  Open Browser  https://google.com  chrome
Suite Teardown  Close Browser

*** Variables ***
${userName1}  小明
${userName2}  小美
${userName3}  小華

*** Test Cases ***

Search Name And Verify Data 
  [Template]  Seach Repeat  
  ${userName1}
  ${userName2}
  ${userName3}

*** Keywords ***
Search Submit
  [Arguments]    ${name}
  Wait Until Element Is Visible  xpath=//div[@class="a4bIc"]/input
  Input Text  xpath=//div[@class="a4bIc"]/input  ${name}
  submit form

Back Google Index
  Wait Until Element Is Visible  id=logo
  Click Link  id=logo

Search Verify
  [Arguments]    ${name}
  Wait Until Element Is Visible  xpath=//div[@class="yuRUbf"]/a/h3
  Element Should Contain  xpath=//div[@class="yuRUbf"]/a/h3  ${name}
  Get Element Attribute  xpath=//div[@class="yuRUbf"]/a  href

Seach Repeat
  [Arguments]    ${name}
  Search Submit  ${name}
  Search Verify  ${name}
  Back Google Index

逐一講解

Settings、Variables、Keywords 每個區塊我就不再次介紹了,請往前看文章即可。

Search Submit  //Keywords 為 搜尋並送出
  [Arguments]    ${name}  //需要帶入一個 name 參數
  Wait Until Element Is Visible  xpath=//div[@class="a4bIc"]/input  //等待 google 搜尋欄的元素出現
  Input Text  xpath=//div[@class="a4bIc"]/input  ${name}  //在 google 搜尋欄中輸入名字
  submit form //送出表單
Back Google Index  //Keywords 為 返回首頁
  Wait Until Element Is Visible  id=logo  //等待左上角的 Logo 元素出現
  Click Link  id=logo   //點擊左上角的 Logo 回到搜尋引擎首頁
Search Verify  //Keywords 為 搜尋並驗證
  [Arguments]    ${name} //需要帶入一個 name 參數
  Wait Until Element Is Visible  xpath=//div[@class="yuRUbf"]/a/h3  //等待第一筆資料的元素欄位出現
  Element Should Contain  xpath=//div[@class="yuRUbf"]/a/h3  ${name}  //第一筆資料需包含 name 參數值
  Get Element Attribute  xpath=//div[@class="yuRUbf"]/a  href //取得第一筆資料的超連結

Keywords 組裝大集合,將會用到的 Keywords 組在一起,形成一個邏輯。

Seach Repeat  //重複搜尋
  [Arguments]    ${name}  //需要帶入一個 name 參數
  Search Submit  ${name}  //搜尋並送出
  Search Verify  ${name}  //搜尋並驗證
  Back Google Index  //返回首頁

撰寫 Test Case 並有效使用 Keywords 的方式,提高可讀性及維護性。

Search Name And Verify Data  //Test Case 為 搜尋名字且驗證回傳正確
  [Template]  Seach Repeat  //這是 Robot framework Template 寫法,功能有點類似 For,是會把透過下方的三個變數的輪流帶近 Seach Repeat 這個 Keywords 中分別驗證 
  ${userName1}
  ${userName2}
  ${userName3}

總結

整體寫下來後,其實還是可以持續優化的

  • 各元素的 xpath 額外拆出來,方便統一控管
  • Wait Until Element Is Visible 相關系列組成一個 keyword,這樣可以更彈性
    • 等待某元素出現,點擊該元素按鈕
    XXXXXXX(keyword name)
      [Arguments]    ${value}  
      Wait Until Element Is Visible  xpath=${xpath}  
      Click Button  xpath=${xpath}  ${value}  
    
    • 等待某元素出現,該元素直接輸入值
    XXXXXXX(keyword name)
      [Arguments]    ${value}  
      Wait Until Element Is Visible  xpath=${xpath}
      Input Text  xpath=${xpath}   ${value}  
    

也會發現因為 UI 測試因為要渲染前端,所以渲染過程中,會相對不穩定
通常就會很常使用 Wait Until Element Is Visible 的方式確保元件顯示後在動作
避免抓不到(or 等不到)元素而產生錯誤
/images/emoticon/emoticon41.gif


上一篇
[Day16] [Web 自動化] Robot framework 基本常見的 Keywords 用法及語法
下一篇
[Day 18][Web 自動化]從零開始,我想建置 Robot framework 專案架構,該如何分配檔案層級?
系列文
QA 三十天養成日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言