iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Software Development

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

[Day15] [Web 自動化] Robot framework 教學,新手初次小專案,帶你快速進入自動化測試領域

  • 分享至 

  • xImage
  •  

我們先看 code,之後在慢慢細解每行 code 在做什麼

此次自動化的目的是

前往 Google 首頁並分別搜尋小明/小美/小華,並驗證搜尋結果第一筆標題名子是否包含以上名子及回傳該標題的網址回來。

Demo

示範影片

Code sample

可以先複製貼上再自己的本地專案執行看看~

*** Settings *** 
Library    Selenium2Library 

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

*** Variables ***  
@{userNameList}  小明  小美  小華 

*** Test Cases ***
Search Name And Verify Data
  FOR  ${name}  IN  @{userNameList}
    SearchSubmit  ${name}
    SearchVerify  ${name}
  END

*** Keywords *** 
SearchSubmit 
  [Arguments]    ${name}
  Input Text  xpath=//div[@class="a4bIc"]/input  ${name}  /
  submit form

SearchVerify
  [Arguments]    ${name}
  Element Should Contain  xpath=//div[@class="yuRUbf"]/a/h3  ${name}
  ${getUrl}  Get Element Attribute  xpath=//div[@class="yuRUbf"]/a  href
  Log  ${getUrl}

有寫過 Robot framework 的高手們,看到這邊的 code 應該會吐血XDD
請先冷靜冷靜!我只是將我第一次寫的 code 貼上來的
稍後下一篇會講解優化後的版本,請到時候再來鞭XDD


逐一講解

Settings => 這主要是引入各種 Library 的地方或自定義的檔案,也可以放置 Setup/Teardown 的區塊

*** Settings ***
Library    Selenium2Library  //引入 Selenium2Library 套件

Suite Setup  Open Browser  https://google.com  chrome   //再執行所有測試之前開啟 chrome 瀏覽器並導向到 https://google.com
Suite Teardown  Close Browser  //再執行所有測試執行結束後關閉 chrome 瀏覽器

Variables => 這是定義變數的區塊

*** Variables *** 
@{userNameList}  小明  小美  小華  // 使用 @ 是 robot 的特性,代表這個參數是陣列

Keywords => 這是撰寫關鍵字的區塊,是 robot framework 重要的特性之一。

我個人覺得有點像是我們將 function 封裝好的感覺。

*** Keywords *** 
SearchSubmit  // 我自定義的 Keywords ,命名為 "搜尋並送出"
  [Arguments]    ${name}  // 這是 robot framework keyword 自定義參數的方式,命名為 name
  Input Text  xpath=//div[@class="a4bIc"]/input  ${name}  // 這是 robot framework 原生提供的 keyword,主要為輸入框輸入 name 參數
  submit form  // 模擬提交表單動作

SearchVerify  // 我自定義的 Keywords ,命名為 "搜尋並驗證"
  [Arguments]    ${name}
  Element Should Contain  xpath=//div[@class="yuRUbf"]/a/h3  ${name}  // 這是 robot framework 原生提供的 keyword,主要為確認元件回傳內容是否包含 name 參數
  ${getUrl}  Get Element Attribute  xpath=//div[@class="yuRUbf"]/a  href  // 這是 robot framework 原生提供的 keyword,主要為確認元件屬性的 href 回傳內容是什麼
  Log  ${getUrl}

Test Cases => 這是撰寫測試案例的區塊,通常會透過不同 Keywords 相組而成。

這個就有點像我們將各種 function 引入使用在某一個主要邏輯中。

*** Test Cases *** 
Search Name And Verify Data  // 這是我自定義的測試案例名稱為 "搜尋並且驗證資料"
  FOR  ${name}  IN  @{userNameList}  // 是 robot 原生提供的 For 寫法,將 userNameList 中的元素逐一取出來
    SearchSubmit  ${name}  // 自定義的 Keywords 為 "搜尋並送出"
    SearchVerify  ${name}  // 自定義的 Keywords 為 "搜尋並驗證"
  END

結語

最後只要執行你的檔案,看是否能更上方 Demo 影片一致就行了
終端機輸入 robot {你的檔案名稱}.robot

個人初次寫這個的時候,其實覺得邏輯蠻奇怪的也很不適應
因為他其實跟寫 code (e.g. python/javscript 等)的感覺差蠻多的
感覺會少了很多程式邏輯感,但其實當我寫完後,回頭 review 的時候
會發現,其實 Robot framework 是真的相對簡單,也因為 Keyword 的關係
它的的整體可讀性也變很高
/images/emoticon/emoticon34.gif


上一篇
[Day14] 發生問題別再究責了!停止究責文化!問題從根本解決才是王道
下一篇
[Day16] [Web 自動化] Robot framework 基本常見的 Keywords 用法及語法
系列文
QA 三十天養成日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言