javascript - Protractor 浏览器在 onPrepare 中未定义

标签 javascript angular protractor

我正在使用 angular 9 并尝试设置一些端到端测试。我见过许多 onPrepare 示例,它们在浏览器上得到了帮助。甚至他们的评论文档也显示了一个不起作用的示例。

知道为什么浏览器未定义吗?

这是 protractor.config.js

// @ts-check
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

const { SpecReporter } = require('jasmine-spec-reporter');
const { browser } = require('protractor');

/**
 * @type { import("protractor").Config }
 */
exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    browserName: 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));

    // this code is an example from the documentation of onPrepare
    // but browser is undefined
    return browser.getProcessedConfig().then(function(config) {
      console.log('Executing capability', config.capabilities);
    });
  }
};

这里有一些关于angular的信息

Angular CLI: 9.0.7                                                       
Node: 10.19.0                                                            
OS: win32 x64                                                            
                                                                         
Angular: 9.0.7                                                           
... animations, cli, common, compiler, compiler-cli, core, forms         
... language-service, platform-browser, platform-browser-dynamic         
... router                                                               
Ivy Workspace: Yes                                                       
                                                                         
Package                           Version                                
-----------------------------------------------------------              
@angular-devkit/architect         0.900.7                                
@angular-devkit/build-angular     0.900.7                                
@angular-devkit/build-optimizer   0.900.7                                
@angular-devkit/build-webpack     0.900.7                                
@angular-devkit/core              9.0.7                                  
@angular-devkit/schematics        9.0.7                                  
@ngtools/webpack                  9.0.7                                  
@schematics/angular               9.0.7                                  
@schematics/update                0.900.7                                
rxjs                              6.5.5                                  
typescript                        3.7.5                                  
webpack                           4.41.2                                 
                                                                         

包.json

{
  "name": "myapp3",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~9.0.2",
    "@angular/common": "~9.0.2",
    "@angular/compiler": "~9.0.2",
    "@angular/core": "~9.0.2",
    "@angular/forms": "~9.0.2",
    "@angular/platform-browser": "~9.0.2",
    "@angular/platform-browser-dynamic": "~9.0.2",
    "@angular/router": "~9.0.2",
    "rxjs": "~6.5.4",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.900.3",
    "@angular/cli": "~9.0.3",
    "@angular/compiler-cli": "~9.0.2",
    "@angular/language-service": "~9.0.2",
    "@types/node": "^12.11.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.3.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "protractor": "~5.4.3",
    "ts-node": "~8.3.0",
    "tslint": "~5.18.0",
    "typescript": "~3.7.5"
  }
}

最佳答案

发生这种情况是因为您从“Protractor ”导入了浏览器并且它是未定义的。 无需导入,浏览器默认在'onPrepare'方法中访问。

因此您需要删除导入,它会起作用。

const { browser } = require('protractor'); // This line should be removed

关于javascript - Protractor 浏览器在 onPrepare 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62585974/

相关文章:

javascript - 为什么在调用一个函数时,第一个 this 是父对象,但在随后的函数调用中,this 指的是 window 对象?

javascript - 如何使用javascript在对象数组中执行计算

javascript - 将文件中的对象属性随机分配给 inline-css

angular - 使用 ngIf 检查数组长度或内容以显示 div

angular - getTestBed 和 TestBed 的区别

windows - Protractor/ Selenium "could not find chromedriver at"(在 Windows 上)

javascript - Protractor 图像上传不适用于 IE 和 firefox

javascript - 修改脚本以关闭 Div

javascript - 将 <li> 类设置为基于路由器的 Angular 4 事件

javascript - Protractor - 更改 css 属性以与元素交互