iT邦幫忙

DAY 3
0

初探網站自動化測試系列 第 3

為什麼我選擇了Geb?(Geb Day 3)

  • 分享至 

  • xImage
  •  

目前已經與友人,將相關資料整理編譯成一本電子書,因為在鐵人賽時時間比較趕,有些錯誤修正的部分,直接參考電子書,就不同步修正了http://learngeb.readbook.tw/

與我交接工作的前QA,之前使用的其實是使用Robot Framework的,Robot語法的使用方式,類似於一個一個Keyword所指成,兩個以上的Keyword可以在組成另一個集合可取新的Keyword,但跟平常習慣寫class跟method的我,非常不習慣,它所提供的官方RIDE,也真是會讓人越寫越火大,之後發現有eclipse plugin for robot,但我沒去試,因為我已經對新歡愛不釋手。

*** Test Cases ***
   [Documentation]    Login Web Site
    Login
    Logout





*** Variables ***
${BROWSER}        firefox
${VALID USER}     xxxxx@yyyyyy.com
${VALID PASSWD}    xxxxxx

*** Keywords ***
Login
    Click Element    id=loginPageBtn
    Input Username    ${VALID USER}
    Input Password    ${VALID PASSWD}
    Submit Credentials

Logout
    Click Element    css=a[href$='logout']
    Sleep    5

轉輾得知了Geb,又把我拉回了物件導向的懷抱,Geb定義了Page和Modules,Page你可以想像成一個一個的頁面(首頁、登入頁、客服頁),Modules則用在,我們有時會把同類的功能放在同組Modules,讓source code可以重複使用,減少維護成本。Geb在控制元素的語法上,也精簡了很多,將在後續會繼續細部的介紹。

class LoginWebSiteSpec extends GebReportingSpec {

    def "go to login page"(){
        to FrontPage
        setLanguageEnglish()

        when:
        to LoginPage

        then:
        at LoginPage
    }

    def "login"(){
        when:
        login()

        then:
        loginSuccess()
    }

    def "logout"(){
        to LayoutPage

        when:
        logoutLink.click()

        then:
        !isLogin()
    }
}





class FrontPage extends Page{

    static at = {title == "Front Page"}

    static url = ""

    static content = {
        languageMenu(wait: true) { $('.dropdown-toggle') }
        languageEnUS { $('.dropdown-menu li a', 0) }
        languageZhTW { $('.dropdown-menu li a', 1) }
        loginButton {$("#loginPageBtn")}
        privacyText {$('.footer a[href$=privacy]').text()}
        shortcutButton {$('#shortcutBtn')}
    }

    def setLanguageEnUS() {
        languageMenu.click()
        languageEnUS.click()
    }

    def setLanguageZhTW() {
        languageMenu.click()
        languageZhTW.click()
    }

    def checkLanguageEnUS() {
         privacyText == "Privacy"
    }

    def checkLanguageZhTW() {
         privacyText == "隱私"
    }
}

上一篇
Geb Framework VS Robot Framework(Geb Day 2)
下一篇
第一個Geb自動化測試程式(Geb Day 4)
系列文
初探網站自動化測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言