How can I completely avoid webdriver-manager?

2020-02-15 07:03发布

问题:

I'm trying to use protractor for e2e tests in my Angular project. I previously installed selenium server and chromedriver in my path and it works fine for non-angular projects. I do not have access to googleapis or any of the alternate cdns required by webdriver-manager.

How can I run protractor tests w/o involving webdriver-manager in any way? I want to use the tools I have installed globally. Is this a possibility?

When I try to run the ng e2e I get the error: Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.

When I try to run webdriver-manager update I get an http 403.

In my protractor.conf.js file I have directConnect: true and capabilities.browserName: 'chrome'

I was hoping that by using directConnect it would just find the chromedriver in my path but that isn't the case. In the past I would use the selenium-webdriver npm module to spin-up an instance of chrome driver.

回答1:

Download latest selenium standalone server and chromedriver from https://www.seleniumhq.org/download/

Create a batch file

java -Dselenium.LOGGER.level=WARNING -Dwebdriver.chrome.driver="C:/Program Files (x86)/Selenium/WebDrivers/ChromeDrivers/2.38/chromedriver.exe" -jar selenium-server-standalone-3.4.0.jar -port 4444

specify the port,Chromedriver location and log level.

Just run the batch file and now you have selenium server running.

In your config file mention Selenium address 127.0.0.1:4444 or localhost



回答2:

I think best way is either go for selenium grid(Dockerized Selenium or Jar based grid . Other option is

directConnect: true 

in your protractor config file.



回答3:

you can use ng cli option: webdriver-update to make it not to execute webdriver update as following:

ng e2e --webdriver-update=false

But ng e2e uses the webdriver in local package not global package, I think you need a npm script to copy your pre-prepared webdriver to project local package before execute ng e2e --webdriver-update=false