###質問内容
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
あなたの回答
tips
プレビュー