2016-12-09 7 views
4

Ich tat dies:angular2 + Selen WebDriver: Kann lösen nicht ‚child_process

ng new typescript-selenium-example 
npm install selenium-webdriver --save 

(zusätzlich habe ich chromedriver meiner /Application kopiert)

Update app.component.ts zu sein:

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!'; 
} 

bekommen erros:

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 

Antwort

12

Dieses Problem zeigte sich auch für mich, als einer meiner Tests eine schlechte beforeEach Methode hatte. Die Funktion hat versucht, eine globale Variable in der Funktion zu erreichen, bevor sie initialisiert wurde. Vielleicht hilft dir das?

Da die Kommentare darauf hin, dies auch passieren kann, wenn Sie einen schlechten Import haben, wie zum Beispiel:

import {describe} from 'selenium-webdriver'; 

oder

import {beforeEach} from "selenium-webdriver/testing"; 
+0

oh ich aus diesem einen sehne, wenn ich zurück Um es zu versuchen, ich werde versuchen, Ihren Vorschlag abgestimmt. – Jas

+1

Auf der Grundlage Ihres Vorschlags habe ich meine letzten Tests, die ich modifiziert habe, auskommentiert, und tatsächlich hat alles wieder funktioniert. @Jas, wenn Sie eine Chance bekommen, sollten Sie dies als Antwort akzeptieren. – jpoveda

+5

gerade herausgefunden, weil Webstorm automatisch 'import {describe} von 'selen-webdriver' hinzugefügt hat;' basierend auf einem Tippfehler, den ich gemacht habe. Das verursacht Selinium spaz. Das Entfernen des fehlerhaften Imports behebt das Problem für mich. – jpoveda