Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

angular2 + selenium webdriver: Can't resolve 'child_process

I did this:

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

(in addition I have copied chromedriver to my /Application)

update app.component.ts to be:

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

getting 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
like image 525
Jas Avatar asked Dec 09 '16 09:12

Jas


2 Answers

This problem showed up for me also when one of my tests had a bad beforeEach method in it. The function was trying to reach a global variable in the function before it was initialized. Maybe that will help you?

As the comments point out, this can also happen when you have a bad import, such as:

import {describe} from 'selenium-webdriver';

or

import {beforeEach} from "selenium-webdriver/testing";
like image 133
nycynik Avatar answered Oct 31 '22 18:10

nycynik


For me I had accidentally imported the wrong library within a component.

I changed this:

import { EventEmitter } from 'selenium-webdriver';

into this:

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

and it works again.

like image 26
Jeremy Avatar answered Oct 31 '22 20:10

Jeremy