angular2 + selenium webdriver:无法解析'child_process

Jas*_*Jas 13 selenium angularjs typescript

我这样做了:

ng new typescript-selenium-example
npm install selenium-webdriver --save
Run Code Online (Sandbox Code Playgroud)

(另外我已复制chromedriver到我的身上/Application)

更新app.component.ts为:

import { Component } from '@angular/core';
import { Builder, By, until } from 'selenium-webdriver';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  constructor() {
    var driver = new Builder()
    .forBrowser('chrome')
    .build();

    driver.get('http://www.google.com/ncr')
        .then(_ => driver.findElement(By.name('q')).sendKeys('webdriver'))
        .then(_ => driver.findElement(By.name('btnG')).click())
        .then(_ => driver.wait(until.titleIs('webdriver - Google Search'), 1000))
        .then(_ => driver.quit());
    console.log('hi');
  }
  title = 'app works!';
}
Run Code Online (Sandbox Code Playgroud)

得到错误:

ERROR in ./~/selenium-webdriver/net/portprober.js
Module not found: Error: Can't resolve 'child_process' in '/Users/myname/tmp/typescript-selenium-example/node_modules/sele
nium-webdriver/net'
 @ ./~/selenium-webdriver/net/portprober.js 20:11-35
 @ ./~/selenium-webdriver/chrome.js
 @ ./~/selenium-webdriver/index.js
 @ ./src/app/app.component.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi main

ERROR in ./~/selenium-webdriver/firefox/binary.js
Module not found: Error: Can't resolve 'child_process' in '/Users/myname/tmp/typescript-selenium-example/node_modules/sele
nium-webdriver/firefox'
 @ ./~/selenium-webdriver/firefox/binary.js 25:14-38
 @ ./~/selenium-webdriver/firefox/index.js
 @ ./~/selenium-webdriver/index.js
 @ ./src/app/app.component.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi main

ERROR in ./~/selenium-webdriver/io/exec.js
Module not found: Error: Can't resolve 'child_process' in '/Users/myname/tmp/typescript-selenium-example/node_modules/sele
nium-webdriver/io'
 @ ./~/selenium-webdriver/io/exec.js 20:21-45
 @ ./~/selenium-webdriver/remote/index.js
 @ ./~/selenium-webdriver/index.js
 @ ./src/app/app.component.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi main
Run Code Online (Sandbox Code Playgroud)

nyc*_*nik 30

当我的一个测试中有一个不好的beforeEach方法时,这个问题也出现了.该函数在初始化之前尝试在函数中到达全局变量.也许这对你有帮助吗?

正如评论所指出的,当导入错误时也会发生这种情况,例如:

import {describe} from 'selenium-webdriver';
Run Code Online (Sandbox Code Playgroud)

要么

import {beforeEach} from "selenium-webdriver/testing";
Run Code Online (Sandbox Code Playgroud)

  • 特别是,刚刚发现它是因为Webstorm自动添加了来自'selenium-webdriver'的`import {describe};`基于我制作的拼写错误.这导致selinium spaz.删除错误导入可以解决我的问题. (6认同)
  • 有完全相同的问题.从"selenium-webdriver/testing"中获取以下狡猾的导入......`import {beforeEach};` (2认同)

jrq*_*ick 23

对我来说,我不小心在组件中导入了错误的库.

我改变了这个:

import { EventEmitter } from 'selenium-webdriver';

进入这个:

import { EventEmitter } from '@angular/core';

它再次有效.

  • 该死的自动导入! (2认同)