bugfix> node.js > 投稿
前提・実現したいこと

Selenium×Node.jsを使用してテストを自動化しようとしていますが、調査段階でブロックされました...

テスト環境
  • Mac OS10.12.6
  • ノード8.11.1
  • Selenium Server 3.12.0
  • Selenium WebDriver 4.0.0
  • ChromeDriver 2.38
私がしたこと

1. Node.jsのインストール

公式サイトから

2. selenium-webdriverのインストール

npm経由でインストール

$ npm install selenium-webdriver

3. selenium-serverのインストール

Homebrew経由でインストール

$ brew install selenium-server-standalone

4. ChromeDriverのインストール

ChromeDriver-Chrome用WebDriver

→ドライバーのダウンロード後にファイルを移動する

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

5. Selenium Serverを起動します

$selenium-server -port 4444&   [1] 33415   C02SY1XFGTFJ:selenium username $18:04:14.512 INFO [GridLauncherV3.launch]-Seleniumビルド情報:バージョン: '3.11.0'、リビジョン: 'e59cfb3'   18:04:14.513情報[GridLauncherV3 $1.launch]-ポート4444でのスタンドアロンSeleniumサーバーの起動   2018-05-24 18:04:14.624:INFO :: main:org.seleniumhq.jetty9.util.log.StdErrLogに@ 441msで初期化されたログ   18:04:14.882情報[SeleniumServer.boot]-Selenium for Workgroupsへようこそ...   18:04:14.882情報[SeleniumServer.boot]-Selenium Serverはポート4444で稼働しています

発生する問題・エラーメッセージ

サンプルとしてテストコードを書く

$ vim sample.js
// Initialization of WebDriver
const webdriver = require('selenium-webdriver');
// Browser selection
const browser = new webdriver.Builder().forBrowser('chrome').build();
// Get page title
browser.get('http://example.selenium.jp/reserveApp/').then(()=>{
    browser.getTitle().then(title => console.log('Page title:',title))
});
// Exit the browser
browser.close();
browser.quit();

上記のコードを実行すると、...

$ node sample.js 
(node:13216) UnhandledPromiseRejectionWarning: NoSuchSessionError: no such session
  (Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac OS X 10.12.6 x86_64)
    at Object.checkLegacyResponse (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/error.js:585:15)
    at parseHttpResponse (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/http.js:533:13)
at Executor.execute (/Users/ko-kamenashi/selenium/node_modules/selenium-webdriver/lib/http.js:468:26)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(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)
(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.

エラーが発生しました。私は何をすべきか? 手を貸してもらえますか?読んでくれてありがとう。

回答 1 件
  • エラーは次のとおりです。     const browser = new     webdriver.Builder()。forBrowser( 'chrome')。build();

    Best way: 
    (async ()=> { 
    await const browser = new webdriver.Builder().forBrowser('chrome').build();
    )();
    
    

あなたの答え