liguofeng29’s blog

個人勉強用ブログだっす。

groovy,geb(selenium),spockによる自動化テスト その1

環境


jdk,mvn,groovy,geb,webdriver

バージョン確認


E:\dev>mvn -version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:37+09:00) Maven home: E:\dev\apache-maven-3.3.3 Java version: 1.8.0_40, vendor: Oracle Corporation Java home: D:\pleiades-e4.4\java\8\jre Default locale: ja_JP, platform encoding: MS932 OS name: “windows 7”, version: “6.1”, arch: “amd64”, family: “dos”

E:\dev>groovy -version
Groovy Version: 2.4.8 JVM: 1.8.0_40 Vendor: Oracle Corporation OS: Windows 7

Groovy Shellでgebを実行する


groovysh

ライブラリダウンロード

groovy:000> import groovy.grape.Grape
===> groovy.grape.Grape
groovy:000> Grape.grab(group: ‘org.gebish’, module: ‘geb-core’, version:‘1.1.1’)
===> null
groovy:000> Grape.grab(group: ‘org.seleniumhq.selenium’, module: ‘selenium-firefox-driver’, version: ‘3.1.0’)
===> null

環境変数

groovy:000> System.setProperty(“webdriver.gecko.driver”, “E:\dev\geckodriver.exe”)
===> null
groovy:000> browser = new geb.Browser()
===> geb.Browser@6ad11a56

ブラウザオープン

groovy:000> browser.go ‘http://google.com’

URL:google.comが開かれる。

検索キー入力&検索ボタンクリック

groovy:000>form = browser.$(‘form#tsf’)
groovy:000>form.size()
groovy:000>form.q = ‘http://javait.hatenablog.com/’
groovy:000>btnK = form.find(‘input[name=btnK]’)
groovy:000>btnK.click()

検索結果タイトルを表示

groovy:000>browser.$(‘h3’).each { println it.text() }
liguofeng29’s blog 2016年現在のJavaについて - arclamp arclamp よねのはてな Challenge Java EE A Memorandum HTML5のform関連 - 新規属性 - liguofeng29’s blog 【Java】GETメソッドでHTTP通信をする汎用オブジェクトを自作してみた … google-http-java-client 入門 - ひだまりソケットは壊れない 略・・・・・

Groovy ScriptでGebを利用する

  • スクリプト
@Grab('org.gebish:geb-core:1.1.1')
@Grab('org.seleniumhq.selenium:selenium-firefox-driver:3.1.0')
import geb.Browser

System.setProperty("webdriver.gecko.driver", "E:\\dev\\groovy_geb\\geckodriver.exe")

def keywords = args.join(' ')
Browser.drive {
    go 'http://google.com'
    $('form#tsf').with {
        q = keywords
        btnK().click()
    }
    // argsがなければ
    // geb.waiting.WaitTimeoutException: condition did not pass in 5.0 seconds
    waitFor {           
        $('h3').size() > 0
    }
    $('h3').each { println "* ${it.text()}" }
}.quit()
  • 実行
    groovy script1.groovy javait.hatenablog.com