0

chrome(v54)の最新のアップデートにより、私たちの分度器テストに失敗したことがわかりました。私たちはgulp-protractor(v3.0.0)の最新バージョンにアップデートしようとしましたが、問題を解決するために最新のWebドライバ(v2.25)をダウンロードしましたが、残念ながら私たちは解決できませんでした。chrome v54/web driver v2.25のgulp-protractorエラー

クロムのアップデート前はすべてうまくいきました。次のように

当社の分度器の構成は次のとおりです。

exports.config = { 
    // Capabilities to be passed to the webdriver instance. 
    capabilities: { 
    'browserName': 'chrome' 
    }, 

    onPrepare: function() { 
     var fs = require('fs'); 
     var testDir = 'testresults/'; 
     if (!fs.existsSync(testDir)) { 
      fs.mkdirSync(testDir); 
     } 

     var jasmineReporters = require('jasmine-reporters'); 

     // returning the promise makes protractor wait for the reporter config before executing tests 
     return browser.getProcessedConfig().then(function() { 
      // you could use other properties here if you want, such as platform and version 

      var browserName = 'browser'; 
      browser.getCapabilities().then(function (caps) { 
       browserName = caps.caps_.browserName.replace(/ /g, "_"); 

       var junitReporter = new jasmineReporters.JUnitXmlReporter({ 
        consolidateAll: true, 
        savePath: testDir, 
        // this will produce distinct xml files for each capability 
        filePrefix: 'test-protractor-' + browserName, 
        modifySuiteName: function (generatedSuiteName) { 
         // this will produce distinct suite names for each capability, 
         // e.g. 'firefox.login tests' and 'chrome.login tests' 
         return 'test-protractor-' + browserName + '.' + generatedSuiteName; 
        } 
       }); 
       jasmine.getEnv().addReporter(junitReporter); 
      }); 
     }); 
    }, 

    baseUrl: 'http://localhost:3000', 

    // Spec patterns are relative to the current working directory when 
    // protractor is called. 
    specs: [paths.e2e + '/**/*.js'], 

    // Options to be passed to Jasmine-node. 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 30000 
    } 
}; 

エラーは次のとおりです。

[13:27:13] E/launcher - Error: Error 
    at C:\ws\node_modules\protractor\built\util.js:55:37 
    at _rejected (C:\ws\node_modules\q\q.js:844:24) 
    at C:\ws\node_modules\q\q.js:870:30 
    at Promise.when (C:\ws\node_modules\q\q.js:1122:31) 
    at Promise.promise.promiseDispatch (C:\ws\node_modules\q\q.js:788:41) 
    at C:\ws\node_modules\q\q.js:604:44 
    at runSingle (C:\ws\node_modules\q\q.js:137:13) 
    at flush (C:\ws\node_modules\q\q.js:125:13) 
    at nextTickCallbackWith0Args (node.js:420:9) 
    at process._tickCallback (node.js:349:13) 
[13:27:13] E/launcher - Process exited with error code 100 

答えて

2

onPreparerunFilenameOrFn_機能内蔵/ util.jsに評価されています。残念ながらstacktraceは役に立ちませんが、これはつまりonPrepareにエラーがあることを意味します。 onPrepareメソッドを見ると、ブラウザ機能からbrowserNameを割り当てるときにエラーが発生します。あなたのコードでは、caps.caps_は実際には定義されていません。 caps.caps_は未定義であるため、caps.caps_.browserNameはエラーを投げています。機能オブジェクトは、次のようにアクセスする必要があります。

browser.getCapabilities().then(capabilities => { 
    let browserName = capabilities.browserName.replace(/ /g, "_"); 
+0

あなたのコードは、それが明確な問題に注意を呼ばれる箱から出して私の問題を解決しませんでしたが - どうやら私有財産」に最近クロームwebdriverを更新アクセスでcaps_ 'はもはや不可能になった。とにかくそれを使用していないはずです。 'browserName = capabilities.get( 'browserName')。replace(//g、" _ ");' [Here](https:// github .com/angular/protractor/issues/3036)は、その問題を抱えている他の人へのリンクです。 ご協力いただきありがとうございます!私はonPrepare関数がこのような漠然としたエラーを引き起こすとは考えていませんでした。 – PremiumTier

+0

問題ありません。 'runFilenameOrFn_'エラーメッセージは役に立ちません。これは最終的に改善されるでしょう。 – cnishina

関連する問題