1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Selenium + groovy の動作環境が作りたかった (リベンジ)

Last updated at Posted at 2015-05-22

はじめに

簡単にSeleniumの動作する環境を作るリたかったのだが
結局 Eclipseをインストールしてしまったのでリベンジ

前回の記事
http://qiita.com/gluelan2013/items/fbd4bb5409fef5b23f15

考察

前回のログから、FireFoxが起動できていない これは画面を見ていてもわかる

なのでFireFoxの起動を別に行ってテストスクリプトを実行してみる

ブラウザの実行は SeleniumGrid に担当してもらう

設定

SeleniumGridの実行は hub と nodeに分かれる
今回は hub node テストスクリプト実行機 をすべて同じマシンで行う

カレントディレクトリに selenium-server-standalone.jar および iedriver chromedriver を保存しておく

hub

コマンドプロンプトからhubの起動

c:>java -jar selenium-server-standalone-2.45.0.jar -role hub

101.png

しばらくすると、ノード確認のためのポーリングが始まります

ブラウザからアクセスして 起動を確認
102.png

node

node側の設定は コマンドラインからもおこなえるが jsonファイルに定義することもできるのでこれで設定する

{
	"capabilities" : [
		{
			"browserName": "firefox",
			"maxInstances": 2,
			"seleniumProtocol": "WebDriver"
		},
		{
			"browserName": "chrome",
			"maxInstances": 2,
			"seleniumProtocol": "WebDriver"
		},
		{
			"browserName": "internet explorer",
			"maxInstances": 2,
			"seleniumProtocol": "WebDriver"
		}
	]
	,
	"configuration":
	{
		"hub": "http://localhost:4444/grid/register"
	}
}

別のコマンドプロンプトから この設定を引数に渡してnodeを起動

C:>java -jar selenium-server-standalone-2.45.0.jar -role node -nodeConfig node.json -Dwebdriver.ie.driver=./IEDriverServer.exe -Dwebdriver.chrome.driver=./chromedriver.exe

103.png

ブラウザから 「default monitoring page : console」のテキストリンクからコンソールへ遷移し 登録されているノードを確認

104.png

テストスクリプト

テストスクリプト側は firefoxを起動していたところを remorteDriverに切り替えて、capability設定で ノードを指定するように変更します

import java.util.concurrent.TimeUnit
// import java.util.Date;
// import java.io.File;
// import org.openqa.selenium.support.ui.Select;
// import org.openqa.selenium.interactions.Actions;
// import org.openqa.selenium.firefox.FirefoxDriver;
// import org.openqa.selenium.*;
// import static org.openqa.selenium.OutputType.*;

import org.openqa.selenium.By
import org.openqa.selenium.Platform
import org.openqa.selenium.WebDriver
import org.openqa.selenium.remote.DesiredCapabilities
import org.openqa.selenium.remote.RemoteWebDriver



public class SeleniumBuilder {
    public static void main(String[] args) throws Exception {
//        FirefoxDriver wd;
//        wd = new FirefoxDriver();

DesiredCapabilities capability = new DesiredCapabilities();
capability.setBrowserName("firefox");
capability.setPlatform(Platform.VISTA);
WebDriver wd = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);

        wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        wd.get("http://www.yahoo.co.jp/");
        wd.findElement(By.id("srchtxt")).click();
        wd.findElement(By.id("srchtxt")).clear();
        wd.findElement(By.id("srchtxt")).sendKeys("selenium");
        wd.findElement(By.id("srchbtn")).click();
        wd.findElement(By.linkText("Selenium - Web Browser Automation")).click();
        wd.quit();
    }
/*    
    public static boolean isAlertPresent(FirefoxDriver wd) {
        try {
            wd.switchTo().alert();
            return true;
        } catch (NoAlertPresentException e) {
            return false;
        }
    }
*/
}

テストスクリプト実行

別のコマンドプロンプトからテストスクリプトを実行する

c:>groovy gridselenium.groovy

ノード実行している コマンドプロンプトに実行ログが表示される

11:03:29.614 INFO - Executing: [new session: Capabilities [{browserName=firefox}]])
11:03:29.637 INFO - Creating a new session for Capabilities [{browserName=firefox}]
11:03:41.471 INFO - Done: [new session: Capabilities [{browserName=firefox}]]
11:03:41.625 INFO - Executing: [implicitly wait: 60000])
11:03:41.704 INFO - Done: [implicitly wait: 60000]
11:03:41.715 INFO - Executing: [get: http://www.yahoo.co.jp/])
11:03:46.580 INFO - Done: [get: http://www.yahoo.co.jp/]
11:03:46.636 INFO - Executing: [find element: By.id: srchtxt])
11:03:47.291 INFO - Done: [find element: By.id: srchtxt]
11:03:47.369 INFO - Executing: [click: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchtx
t]])
11:03:48.089 INFO - Done: [click: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchtxt]]
11:03:48.104 INFO - Executing: [find element: By.id: srchtxt])
11:03:48.259 INFO - Done: [find element: By.id: srchtxt]
11:03:48.282 INFO - Executing: [clear: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchtx
t]])
11:03:48.415 INFO - Done: [clear: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchtxt]]
11:03:48.433 INFO - Executing: [find element: By.id: srchtxt])
11:03:48.496 INFO - Done: [find element: By.id: srchtxt]
11:03:48.512 INFO - Executing: [send keys: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: sr
chtxt], [selenium]])
11:03:48.692 INFO - Done: [send keys: 0 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchtxt
], [selenium]]
11:03:48.708 INFO - Executing: [find element: By.id: srchbtn])
11:03:48.858 INFO - Done: [find element: By.id: srchbtn]
11:03:48.880 INFO - Executing: [click: 1 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchbt
n]])
11:03:50.447 INFO - Done: [click: 1 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> id: srchbtn]]
11:03:50.465 INFO - Executing: [find element: By.linkText: Selenium - Web Browser Automation])
11:03:50.810 INFO - Done: [find element: By.linkText: Selenium - Web Browser Automation]
11:03:50.819 INFO - Executing: [click: 2 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> link text:
 Selenium - Web Browser Automation]])
11:03:51.976 INFO - Done: [click: 2 [[FirefoxDriver: firefox on WINDOWS (9a2b5cae-a329-4b09-bcff-e1868c2c560e)] -> link text: Sele
nium - Web Browser Automation]]
11:03:51.996 INFO - Executing: [delete session: be68ba47-ab0c-4f34-b2b9-22a6181cbe6f])
11:03:54.061 INFO - Command failed to close cleanly. Destroying forcefully (v2). org.openqa.selenium.os.UnixProcess$SeleniumWatchD
og@a3712f
11:04:23.609 INFO - Done: [delete session: be68ba47-ab0c-4f34-b2b9-22a6181cbe6f]

無事実行を確認

考察

テストスクリプトからfirefox起動を分離すれば起動できた。

で、そもそもfirefoxはなぜ起動しないのだろうか?

と、こういう場合どうやって解決すればよいのだろうか???

検索したら同じ問題を載せているものがあった
https://bobswift.atlassian.net/browse/GINT-86

おわり?

この環境が簡単に構築できるものなのかといわれると・・・うーむ。
クロスブラウザも視野に入っているのであれば一手ではある気もするが・・・
リベンジできた感がない(吐血

SeleniumサーバもDockerで。「Docker Selenium」レビュー
http://knowledge.sakura.ad.jp/tech/2631/

Docker で Selenium Grid の環境構築をもっと楽に!
http://developer.cybozu.co.jp/tech/?p=8113

Docker で Selenium Grid による並列実行環境を構築
http://qiita.com/akasakas/items/233f04a5c47d2075c262

Docker on CoreOS on Virtualbox(Vagrant) で Selenium Grid Node を大量に作成して並列に囲まれてみたいと願った
http://gongo.hatenablog.com/entry/2013/12/23/220537

ちなみに

SeleniumGrid環境で実行すると最後に下記が表示されます

109.png

これもずっと前からでるけど原因不明なんだな~

参考

Selenium 2 を導入する
http://www.ibm.com/developerworks/jp/web/library/wa-selenium2/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?