此驱动程序的量角器会话ID问题没有有效的会话ID,可能无法再使用

时间:2015-12-23 14:38:10

标签: selenium-webdriver protractor angularjs-e2e e2e-testing cucumberjs


我是使用Protractor的新手,并且大约在一个月前开始使用它。我使用的是Protractor 2.5.1和黄瓜不是茉莉花;我最近在测试中遇到了会话ID问题。

有时我的测试通过,有时他们会因为这个错误而失败:(This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used.) 我在网上找到的唯一建议是this happens when you do not use callback(),但这似乎并不正确,因为我在我的黄瓜测试中使用了回调并且没有阻止它。
Another solution suggested was to set a max width to the window size, that didn't cut it either

这是我试过的:

  1. 我知道如果还有一步,司机就不会退出 在最后一个之后,就像一个'失速或无操作',所以我又增加了一步 只是为了给司机留出时间来完成最后一次操作但是 没用。
  2. 我使用像这样的回调

    > this.When(/^I "([^"]*)" and do something with this"([^"]*)"$/,
    > function (action, result, callback) {
    >     return app.takeAction(action).then(function (res) {
    >       return res === result; //passed in up there   
    >     }).then(callback) //notice callback here as suggested 
                           //to avoid this invalid session id issue 
    >       .then(null, function () {     //handle error here     
    >         console.log('An error occured');
    >       });   });
    
    1. 注意上面代码中的处理pipiline,如果回调因任何原因抛出错误,它将被最后一个错误处理程序捕获。

    2. 因为您必须登录我们的应用程序,所以我务必在每个功能文件之前将您注销,即测试。这应该会破坏之前的cookie / session,但所有这些尝试都无法解决这个问题。

  3.   

    哦,我的所有测试都成功运行,但最后,测试失败了   无效的会话ID错误。   错误:此驱动程序实例没有有效的会话ID(您是否调用了WebDriver.quit()?)并且可能不再使用。       在checkHasNotQuit(C:\


    有没有人遇到这个问题,你有什么解决方法?任何帮助将不胜感激。

    BTW这是我的配置文件:

    > exports.config = {   framework: 'cucumber',   capabilities: {
    >     'browserName': 'chrome',
    >     loggingPrefs: {
    >       driver: 'DEBUG',
    >       server: 'INFO',
    >       browser: 'ALL'
    >     }   },
    > 
    >   resultJsonOutputFile: conf.paths.e2e + '/out/test-report.json',  
    > specs: [
    >     conf.paths.e2e + '/**/*.feature'   ],
    > 
    > selenium server   baseUrl: 'http://localhost:3000/application/',
    > 
    >   onPrepare: function() {
    >     console.log('Getting:'+exports.config.baseUrl);
    >     browser.get(exports.config.baseUrl);
    >     browser.driver.manage().window().maximize();
    >     browser.manage().timeouts().setScriptTimeout(15000);
    > 
    >     var tmpDir = path.resolve(__dirname, './e2e/screenshots');
    >     console.log('Clearing tmp dir: ' + tmpDir);
    >     rimraf(tmpDir, function(error) {
    >       if (error) {
    >         console.error('Error clearing tmp dir: ', error)
    >       }
    >     });   },
    > 
    >   cucumberOpts: {
    >     require: conf.paths.e2e + '/steps/**/*Steps.js',
    >     tags: [ '~@wip', '~@manual' ],
    >     format: 'pretty'   } };
    

0 个答案:

没有答案