質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

1747閲覧

SeleniumとPhantomJSによる自動テストコード

lashca

総合スコア8

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2017/12/23 09:42

###質問内容
Seleniumを使って、PhantomJSでテストを実施するテストコードについて、webdriverオブジェクトの生成コードについてご教示ください。

Chromeを利用する場合は、以下のコードになると認識しておりますが、PhantomJSの場合はどのようなコードになるか知りたいのです。

js

1var driver = new webdriver.Builder().usingServer('http://localhost:4444/wd/hub').withCapabilities(webdriver.Capabilities.chrome()).build();

###概況
以下のサイトを参考にしながら、Jenkinsを利用したWebアプリのUIテスト環境の構築をしております。
https://ics.media/entry/5759/2

参考サイトではChromeによる環境構築をしておりますが、ヘッドレスブラウザによるテスト自動化を行いたかったため、PhantomJSをで行いたいと思ってます。
環境構築方法は、参考サイトを大きくは変わらず、Selenium Standalonサーバは以下のコマンドで実行しました。

java -Dphantomjs.binary.path=/usr/local/bin/phantomjs -jar selenium-server-standalone-3.8.1.jar

その後、参考サイトにある以下のサンプルコードを実行しましたが、Chromeを前提としているため、当然のようにエラーとなりました。
PhantomJSを利用を想定した場合にどのようなサンプルコードの修正が必要かご教示ください。

###エラーメッセージ

サンプルコードをそのまま実行すると、以下のエラーコードが発生。

入力フォーム デモ 1) "before all" hook: ret 2) "after all" hook: ret 0 passing (1s) 2 failing 1) 入力フォーム デモ "before all" hook: ret: SessionNotCreatedError: Unable to create new service: ChromeDriverService Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:32.194Z' System info: host: 'xxx.com', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-693.11.1.el7.x86_64', java.version: '1.8.0_151' Driver info: driver.version: unknown

###ソースコード
参考サイトのサンプルコードは以下の通り。

js

1var webdriver = require('selenium-webdriver'); 2var t = require('selenium-webdriver/testing'); 3var expect = require('expect.js'); 4var driver; 5var assert = require('assert'); 6var By = webdriver.By; 7 8t.describe('入力フォーム デモ', function () { 9 t.before(function () { 10 driver = new webdriver.Builder().usingServer('http://localhost:4444/wd/hub').withCapabilities(webdriver.Capabilities.chrome()).build(); 11 }); 12 13 t.after(function () { 14 driver.quit(); 15 }); 16 17 t.it('名前欄の必須入力チェック その1', function () { 18 driver.get('http://ics-drive.jp/sandbox/demo/demo.html').then(function () { 19 // 何も入力せずにSubmitする 20 driver.findElement(By.id('sampleForm')).submit(); 21 22 // エラーメッセージを取得して、文言が正しいかチェックする 23 driver.wait(driver.findElement(By.id('error_name')).getText(), 1000) 24 .then(function (text) { 25 expect(text).to.be('名前を入力してください。'); 26 }); 27 }); 28 }); 29 30 t.it('名前欄の必須入力チェック その2', function () { 31 driver.get('http://ics-drive.jp/sandbox/demo/demo.html').then(function () { 32 // 名前を入力してSubmitする 33 driver.findElement(By.id('name')).sendKeys('品川太郎'); 34 driver.findElement(By.id('sampleForm')).submit(); 35 36 // エラーメッセージを取得して、文言が空であるか確認する 37 driver.wait(driver.findElement(By.id('error_name')).getText(), 1000) 38 .then(function (text) { 39 expect(text).to.be(''); 40 }); 41 }); 42 }); 43 44});

###環境

  • CentOS 7.4(x64)
  • Java 1.8.0_151
  • Selenium 3.8.1
  • PhantomJS 2.1.1
  • Jenkins 2.89.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問