Sahi (1) —— 快速入門(101 Tutorial)

Richaaaard發表於2015-12-29

Sahi (1) —— 快速入門(101 Tutorial)


jvm版本: 1.8.0_65

sahi版本: Sahi Pro 6.1.0

參考來源:

Sahi官網

Sahi Quick Tutorial

要求

Sahi執行需要Java 1.5 或更高版本

下載

從官網下載Sahi Pro需要註冊獲取30天的試用期。目前Sahi貌似已不在提供社群版。

install_sahi_pro_v610_20150617.jar

安裝

雙擊“install_sahi_pro_xxx.jar”然後執行安裝包

或命令列執行

java -jar install_sahi_pro_xxx.jar

Sahi (1) —— 快速入門(101 Tutorial)

*注意,需要將Sahi安裝到目錄沒有空格的路徑下,否則Chrome可能會出錯。
河蟹

我們支援正版,想延長試用期的童鞋私聊。

啟動Sahi

Sahi Dashboard自動啟動Sahi代理,並且可以啟動配置好的瀏覽器。
Sahi (1) —— 快速入門(101 Tutorial)

啟動Sahi Dashboard有三種方式:

  1. 雙擊桌面圖示
  2. 通過Windows啟動選單執行
  3. 命令列

    • Windows
      • 進入目錄 '''\userdata\bin''' 然後執行 '''start_dashboard.bat'''
    • Linux/Mac
      • 進入目錄 '''/userdata/bin''' 然後執行 '''./start_dashboard.sh'''

錄製Sahi指令碼

  1. 以Firefox為例,點選Sahi Dashboard上的瀏覽器圖示,我們可以看到Sahi的會為我們啟動它的一個首頁

Sahi (1) —— 快速入門(101 Tutorial)

  1. 在新的視窗開啟“Sahi Controller”

  2. 在"Sahi Controller"上開啟選項卡“Record”

Sahi (1) —— 快速入門(101 Tutorial)

  1. 在“Script Name:”處填上 first_script.sah,然後點選“Record”

  2. 點選“Sample Application”

Sahi (1) —— 快速入門(101 Tutorial)

  1. 開啟Sahi的示例程式後,輸入使用者名稱“test”和密碼“secret”,然後點選“Login”按鈕登陸
    Sahi (1) —— 快速入門(101 Tutorial)

    最後一步的記錄可在“Evaluate Expression”中檢視
    Sahi (1) —— 快速入門(101 Tutorial)

  2. 登陸後是一個購物車,新增數量2,3,1然後點選“Add”按鈕,底部會計算出總價。

Sahi (1) —— 快速入門(101 Tutorial)

斷言

一個指令碼通常包括網頁上的操作以及功能驗證,Sahi可以在錄製指令碼的過程中增加斷言,來實現驗證。

為總價加一個斷言:

  1. 將滑鼠移至頁面html元素上,然後按住CRTL鍵

     如果是Mac系統,應用程式窗體需要在focus狀態下接受滑鼠的事件。
  2. “Accessor”欄位會出現在Controller上,在這個例子中,我們將滑鼠懸浮在“Grand Total”欄位上

  3. 點選“Assert”按鈕,為元素生成斷言

  4. 這些斷言會在“Evaluate Expression”中看到

  5. 點選“Test-->” 驗證斷言是否為真

  6. 一旦斷言為真,點選“Append to Script”將斷言加入指令碼

Sahi (1) —— 快速入門(101 Tutorial)

    用“Evaluate Expression”和“Test-->”可以執行任何javascript指令碼,在Controller上的操作不會被錄下,只有頁面上的直接操作才會被記錄。
  1. 點選“登出”

  2. 在Controller上點選“Stop”完成錄製

回放

Sahi (1) —— 快速入門(101 Tutorial)

  1. 輸入剛才錄製好的指令碼檔名稱到“File: ”欄位下
  2. 輸入測試的開始地址

     http://sahitest.com/demo/training/login.htm
  3. 點選“Play”按鈕

指令碼中的步驟會被執行,Controller也會在“Statement”裡面輸出執行的結果,一旦執行完畢,會在底部出現“SUCCSESS”或者“FAILURE”的字樣。

*注意:Controller可以隨時關閉,不會影響回放。

檢視日誌

Sahi (1) —— 快速入門(101 Tutorial)

Sahi (1) —— 快速入門(101 Tutorial)

Sahi (1) —— 快速入門(101 Tutorial)

Sahi (1) —— 快速入門(101 Tutorial)

修改指令碼

Sahi (1) —— 快速入門(101 Tutorial)

/* --Objects Definitions Above-- */

function login($user, $password){
  _setValue(_textbox("user"), $user);
  _setValue(_password("password"), $password);
  _click(_submit("Login"));
}

function addBooks($qJava, $qRuby, $qPython){
  _setValue(_textbox("q"), $qJava);
  _setValue(_textbox("q[1]"), $qRuby);
  _setValue(_textbox("q[2]"), $qPython);
  _click(_button("Add"));
}

function verifyTotal($total){
  _assertExists(_textbox("total"));
  _assert(_isVisible(_textbox("total")));
  _assertEqual($total, _getValue(_textbox("total")));
}

function logout(){
  _click(_button("Logout"));
}

/* --Functions Above-- */

_navigateTo("http://sahi.co.in/demo/training/");

login("test", "secret");
addBooks("2", "3", "1");
verifyTotal("1550");
logout();

first_script_lib.sah

function login($user, $password){
  _setValue(_textbox("user"), $user);
  _setValue(_password("password"), $password);
  _click(_submit("Login"));
}

function addBooks($qJava, $qRuby, $qPython){
  _setValue(_textbox("q"), $qJava);
  _setValue(_textbox("q[1]"), $qRuby);
  _setValue(_textbox("q[2]"), $qPython);
  _click(_button("Add"));
}

function verifyTotal($total){
  _assertExists(_textbox("total"));
  _assert(_isVisible(_textbox("total")));
  _assertEqual($total, _getValue(_textbox("total")));
}

function logout(){
  _click(_button("Logout"));
}

first_script.sah

_include("first_script_lib.sah");

_navigateTo("http://sahi.co.in/demo/training/");

login("test", "secret");
addBooks("2", "3", "1");
verifyTotal("1550");
logout();

命令列使用

$ ./testrunner.sh first_script.sah http://sahitest.com/demo/training/ firefox

Sahi (1) —— 快速入門(101 Tutorial)

測試套件

invalid_login.sah

_setValue(_textbox("user"), "test");
_setValue(_password("password"), "badpassword");
_click(_submit("Login"));
_assert(_isVisible(_div("errorMessage")));
_assertEqual("Invalid username or password", _getText(_div("errorMessage")));    

tutorial.suite

first_script.sah
invalid_login.sah

命令列執行

$ ./testrunner.sh tutorial.suite http://sahitest.com/demo/training/ chrome

執行結果

Sahi (1) —— 快速入門(101 Tutorial)

結束

相關文章