jvm版本: 1.8.0_65javascript
sahi版本: Sahi Pro 6.1.0html
參考來源:java
Sahi官網chrome
Sahi運行須要Java 1.5 或更高版本jvm
從官網下載Sahi Pro須要註冊獲取30天的試用期。目前Sahi貌似已不在提供社區版。測試
install_sahi_pro_v610_20150617.jar
雙擊「install_sahi_pro_xxx.jar」而後運行安裝包ui
或命令行運行lua
java -jar install_sahi_pro_xxx.jar
咱們支持正版,想延長試用期的童鞋私聊。firefox
Sahi Dashboard自動啓動Sahi代理,而且能夠啓動配置好的瀏覽器。
啓動Sahi Dashboard有三種方式:
命令行
在新的窗口打開「Sahi Controller」
在"Sahi Controller"上打開選項卡「Record」
在「Script Name:」處填上 first_script.sah,而後點擊「Record」
點擊「Sample Application」
打開Sahi的示例程序後,輸入用戶名「test」和密碼「secret」,而後點擊「Login」按鈕登錄
最後一步的記錄可在「Evaluate Expression」中查看
登錄後是一個購物車,添加數量2,3,1而後點擊「Add」按鈕,底部會計算出總價。
一個腳本一般包括網頁上的操做以及功能驗證,Sahi能夠在錄製腳本的過程當中增長斷言,來實現驗證。
爲總價加一個斷言:
將鼠標移至頁面html元素上,而後按住CRTL鍵
若是是Mac系統,應用程序窗體須要在focus狀態下接受鼠標的事件。
「Accessor」字段會出如今Controller上,在這個例子中,咱們將鼠標懸浮在「Grand Total」字段上
點擊「Assert」按鈕,爲元素生成斷言
這些斷言會在「Evaluate Expression」中看到
點擊「Test-->」 驗證斷言是否爲真
一旦斷言爲真,點擊「Append to Script」將斷言加入腳本
用「Evaluate Expression」和「Test-->」能夠執行任何javascript腳本,在Controller上的操做不會被錄下,只有頁面上的直接操做纔會被記錄。
點擊「登出」
在Controller上點擊「Stop」完成錄製
輸入測試的開始地址
http://sahitest.com/demo/training/login.htm
點擊「Play」按鈕
腳本中的步驟會被執行,Controller也會在「Statement」裏面輸出執行的結果,一旦執行完畢,會在底部出現「SUCCSESS」或者「FAILURE」的字樣。
/* --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
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
執行結果