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

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

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

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

selenium

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

Q&A

解決済

2回答

5905閲覧

Selenium×Node.jsでテスト実行すると「NoSuchSessionError: no such session」となりうまくいかない...

okame

総合スコア54

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

selenium

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

0グッド

0クリップ

投稿2018/05/25 03:20

前提・実現したいこと

会社プロダクトで人力で行っているシナリオテストの工数・負荷を削減したく
Selenium×Node.jsでテスト自動化を行おうとしていますが、調査の段階で詰まってしまっています。。。

環境

  • Mac OS10.12.6
  • Node 8.11.1
  • Selenium Server 3.12.0
  • Selenium WebDriver 4.0.0
  • ChromeDriver 2.38

やったこと

1. Node.js のインストール
公式サイトから
2. selenium-webdriverのインストール
npm経由でインストール

lang

1$ npm install selenium-webdriver

3. selenium-serverのインストール
Homebrew経由でインストール

lang

1$ brew install selenium-server-standalone

4. Chromeドライバのインストール
ChromeDriver - WebDriver for Chrome
→ドライバをダウンロードしたらファイルを移動

lang

1$ mv /Users/username/Downloads/chromedriver ./ 2$ ls -la 3total 31920 4drwxr-xr-x 7 username staff 238 5 24 17:42 . 5drwxr-xr-x+ 55 username staff 1870 5 24 17:42 .. 6-rwxr-xr-x@ 1 username staff 11917200 4 20 16:39 chromedriver 7drwxr-xr-x 41 username staff 1394 5 24 16:45 node_modules 8-rw-r--r-- 1 username staff 9367 5 24 16:45 package-lock.json

5. Selenium Server の起動
バックグラウンドで起動

lang

1$ selenium-server -port 4444 & 2[1] 33415 3C02SY1XFGTFJ:selenium username$ 18:04:14.512 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.11.0', revision: 'e59cfb3' 418:04:14.513 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4444 52018-05-24 18:04:14.624:INFO::main: Logging initialized @441ms to org.seleniumhq.jetty9.util.log.StdErrLog 618:04:14.882 INFO [SeleniumServer.boot] - Welcome to Selenium for Workgroups.... 718:04:14.882 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444

発生している問題・エラーメッセージ

サンプルとなるテストコードを書きます。

lang

1$ vim sample.js

lang

1// WebDriver の初期化 2const webdriver = require('selenium-webdriver'); 3// ブラウザの選択 4const browser = new webdriver.Builder().forBrowser('chrome').build(); 5 6// ページタイトルの取得 7browser.get('http://example.selenium.jp/reserveApp/').then(()=>{ 8 browser.getTitle().then(title => console.log('ページタイトル:',title)) 9}); 10 11// ブラウザの終了 12browser.close(); 13browser.quit();

上記コードを実行させると、、、

lang

1$ node sample.js 2(node:13216) UnhandledPromiseRejectionWarning: NoSuchSessionError: no such session 3 (Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac OS X 10.12.6 x86_64) 4 at Object.checkLegacyResponse (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/error.js:585:15) 5 at parseHttpResponse (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/http.js:533:13) 6 at Executor.execute (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/http.js:468:26) 7 at <anonymous> 8 at process._tickCallback (internal/process/next_tick.js:188:7) 9(node:13216) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2) 10(node:13216) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

とエラーになります。
エラーメッセージ「NoSuchSessionError: no such session」等でググると記事は出てくるのですが、
本事象の解決とは至っていません。

以上です

お手数ですが皆様のお知恵を拝借できれば幸いです。宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

自己解決

Node.jsだとドライバの不具合が解消しなかったので、PHPでfacebook-webdriverを使う形に切り替えたらSelenium正常に動作しました。

PHPでWebブラウザを操作するために必要なライブラリ「facebook-webdriver」のダウンロード

Composerのダウンロード

ComposerはPHPのパッケージ管理ツールです。

bash

1$ curl -sS https://getcomposer.org/installer | php 2All settings correct for using Composer 3Downloading... 4 5Composer (version 1.6.5) successfully installed to: /Users/kamenashikou/selenium/composer.phar 6Use it: php composer.phar

facebook-webdriverのインストール

Facebookさんが作ってくれたツールです。少し時間がかかります。

bash

1$ php composer.phar require facebook/webdriver 2Using version ^1.6 for facebook/webdriver 3./composer.json has been created 4Loading composer repositories with package information 5Updating dependencies (including require-dev) 6Package operations: 2 installs, 0 updates, 0 removals 7 - Installing symfony/process (v4.1.1): Downloading (100%) 8 - Installing facebook/webdriver (1.6.0): Downloading (100%) 9facebook/webdriver suggests installing ext-SimpleXML (For Firefox profile creation) 10Writing lock file 11Generating autoload files

最終的なディレクトリ構成

bash

1$ ls -la 2total 38368 3drwxr-xr-x 8 username staff 272 7 5 09:49 . 4drwxr-xr-x+ 95 username staff 3230 7 5 09:35 .. 5-rwxr-xr-x@ 1 username staff 12093844 6 7 13:25 chromedriver 6-rw-r--r-- 1 username staff 64 7 5 09:49 composer.json 7-rw-r--r-- 1 username staff 4447 7 5 09:49 composer.lock 8-rwxr-xr-x 1 username staff 1849094 7 5 09:48 composer.phar 9-rwxr-xr-x@ 1 username staff 5685072 6 16 05:56 geckodriver 10drwxr-xr-x 6 username staff 204 7 5 09:49 vendor

これでselenium-serverを実行し、PHPのテストコードでSelenium実行されました。

投稿2018/07/05 04:31

okame

総合スコア54

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

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

0

私も微妙に違いますが似たような事象に遭遇したことがあります。
結論から言うと原因はよく分からず、解決しませんでした。

chromiumプロジェクトのバグトラッカーなどでも何年か前から議論されていましたが、どうなったのかはわかりません。

私が解決した方法は、Dockerを使うことです。
ChromeDriverはバージョンによってよくわからない不具合があるようで、安定していないと思われます。
ですので、linuxやmacにChromeDriverを入れてE2Eテストを行うことはオススメしません。

Dockerは使われたことはありますか?
とりあえずDockerをインストールしたあとに以下のコマンドを実行してみてください。
これでChromeの入ったSeleniumコンテナがlocalhost:4444で起動します。

bash

1$ docker run -p 4444:4444 -itd selenium/standalone-chrome-debug

Node.js側のseleniumドライバの設定はよくわかりませんが、host/portをlocalhost/4444に設定してテストしてみてください。

投稿2018/05/27 08:22

keroxp

総合スコア114

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

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

okame

2018/05/27 11:33

ご教示いただきありがとうございます!! どなたからもコメントいただけなかったので諦めかけていました。 似たような事象で解決に至らなかったのですね。そうでしたか。。。 とりあえず動作確認をしたくMacで環境構築しようとしたのですが、一旦諦めます。 解決方法はDockerですね!いずれは部内へ展開する予定で テスト環境をDockerで共有するつもりでしたのでちょうどよかったです\(^o^)/ 週明け時間をとって今度はDockerで試してみます。結果を改めて共有させていただきますね! 取り急ぎ御礼まで。
okame

2018/06/07 07:14

keroxp様 Docker上でご教示いただいたコマンドを実行しコンテナの生成/起動はできました。 この後の進め方として、テストコードをどこに書いてどのように実行していけば良いでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問