1

問題

Protractor と Selenium-webdriver を使用して、AppVeyor にいくつかの e2e テストを実行させようとしています。

私のローカル マシンではすべて正常に動作しますが、AppVeyor でビルドおよびテストすると、selenium-webdriver でメソッドが見つからないため、分度器がコード 1 で終了するようです。エラー メッセージに関する情報を取得しようとしましたが、検索してもどこにも行きませんでした。結果のほとんどは、Java を使用したバックエンド テストから得られます。

ビルドログのスニペットは次のとおりです。

node_modules\.bin\gulp protractor
[08:37:23] Using gulpfile C:\projects\kitos\gulpfile.js
[08:37:23] Starting 'protractor'...
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://10.240.0.18:63619/wd/hub
.. 

Finished in 42.225 seconds
2 tests, 2 assertions, 0 failures

C:\projects\kitos\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108
  var template = new Error(this.message);
                 ^
UnknownError: Can't obtain updateLastError method for class com.sun.jna.Native
    at new bot.Error (C:\projects\kitos\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108:18)
    at Object.bot.response.checkResponse (C:\projects\kitos\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:109:9)
    at C:\projects\kitos\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:379:20
    at [object Object].promise.ControlFlow.runInFrame_ (C:/projects/kitos/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20)
    at [object Object].goog.defineClass.notify (C:/projects/kitos/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25)
    at [object Object].promise.Promise.notify_ (C:/projects/kitos/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12)
    at Array.forEach (native)
    at [object Object].promise.Promise.notifyAll_ (C:/projects/kitos/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15)
    at goog.async.run.processWorkQueue (C:\projects\kitos\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15)
    at process._tickCallback (node.js:368:9)
[launcher] Process exited with error code 1
[08:38:13] 'protractor' errored after 50 s
[08:38:13] Error in plugin 'gulp-protractor'
Message:
    protractor exited with code 1

Selenium サーバーは実行中で、テストは成功しますが、サーバーがシャットダウンしようとするとエラーが発生します。

設定

ビルドの開始時に、インストール後のスクリプトとしてnpm install実行されます。node_modules\\.bin\\webdriver-manager update --standalone

分度器は、gulp-protractor プラグインを使用して gulp タスクで実行され、セレン スタンドアロン jar は、次のように分度器構成で定義されます。

exports.config = {
    seleniumServerJar: '../node_modules/protractor/selenium/selenium-server-standalone-2.47.1.jar',

    specs: ['Tests/**/*e2e.spec.js'],

    resultJsonOutputFile: 'results-protractor.json',

    allScriptsTimeout: 30000
};

完全なビルドログは、 https ://ci.appveyor.com/project/Crevil/kitos/build/1.0.187 で確認でき ます。デプロイのログはコンソールで非常に大きく、AppVeyor では設定できません。

ローカルログ情報

前述のとおり、ローカル マシンではすべて正常に動作します。ここに分度器の実行のログがあります。

C:\Users\BSO\Documents\Git repos\kitos>gulp protractor
[09:54:58] Using gulpfile ~\Documents\Git repos\kitos\gulpfile.js
[09:54:58] Starting 'protractor'...
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://192.168.5.153:16772/wd/hub
..

Finished in 5.241 seconds
2 tests, 2 assertions, 0 failures

Shutting down selenium standalone server.
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 passed
[09:55:08] Finished 'protractor' after 10 s

C:\Users\BSO\Documents\Git repos\kitos>
4

1 に答える 1

1

この問題は、Java ランタイム エンジンに次のパラメータを指定することで解決されます。

localSeleniumStandaloneOpts: {
        args: ['-Djna.nosys=true']
},
...

ここの分度器の問題Feodor Fitsner による具体的な解決策に詳細があります。

于 2016-02-29T13:30:43.650 に答える