解决方法
也就是说,我的印象是,可以将standard client直接连接到本地的标准WebDriver(ChromeDriver),而无需使用Java selenium-server-standalone-2.xx.0.jar服务器.由于nightwatchJS是我尝试过的第一个客户端,因此很难找到一个可以工作的配置,因为所有文档都显示了Nate Stone上面说的内容.我看到的所有示例都表明需要规定selenium-server-standalone-2.xx.0.jar的位置:
selenium": { "start_process": true,"server_path": "lib/selenium-server-standalone-2.53.0.jar","cli_args" : { "webdriver.chrome.driver" : "/Users/greg.kedge/bin/chromedriver" },"log_path": "integration/log" }
他就是我所说的:如果你希望nightwatch在测试期间为你启动(和停止)服务器(“start_process”:true),那么似乎有必要运行Java服务器.
但是,通过大量试用,如果您想在命令行上自行启动ChromeDriver,从而一直使用ChromeDriver,我可以在没有Java Selenium独立的情况下运行ChromeDriver. CAVEAT:到目前为止只在OS X上尝试过……所以,假设ChromeDriver在$PATH中:
% chromedriver --url-base=/wd/hub Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 9515 Only local connections are allowed.
现在抓住该端口(9515)并更新你的nightwatch.json以指示你想要使用Chrome.我正在设置默认设置,但您可以设置特定于Chrome的环境.从nightwatch.json中完全删除“selenium”块,现在告诉nightwatch它可以找到正在运行的服务器以及服务的浏览器类型:
"test_settings": { "default": { "launch_url": "http://localhost:8888/","selenium_host": "127.0.0.1","selenium_port": "9515","silent": true,"firefox_profile": false,"screenshots": { "enabled": false,"path": "" },"desiredCapabilities": { "browserName": "chrome","javascriptEnabled": true,"acceptSslCerts": true,"__commentOut: chromeOptions" : { "args" : ["start-fullscreen"] } },} }
使用它这种方式对我有用;我可以在没有Java Selenium独立服务器的情况下运行nightwatch来驱动Chrome.同样,这是在OS X上使用始终运行的ChromeDriver.我无法弄清楚如何在不添加Java Selenium独立服务器的情况下让nightwatch管理启动/停止ChromeDriver.