Windows 上的 Selenium WebDriver 错误:logging.js 未找到
Selenium WebDriver Error on Windows: logging.js not found
我正在使用 Selenium 的 WebDriverJS 在 Windows 8.1 和 JavaScript 上自动化 Chrome。我下载了 ChromeDriver 和 Selenium Standalone Server jar 文件的副本并放在 E:\Selenium
目录中。我启动了 Selenium Standalone Server 并尝试 运行 我的 javascript 代码写在 BrowserTest.js
文件中,Node 命令提示符为
E:\Selenium> Node BrowserTest.js
BrowserTest.js
:
var driver = require("selenium-webdriver");
function createDriver() {
var driver = new driver.Builder()
.usingServer('http://localhost:4444/wd/hub')
.withCapabilities(driver.Capabilities.chrome())
.build();
driver.manage().timeouts().setScriptTimeout(10000);
return driver;
}
var driver = createDriver();
driver.get("http://www.google.com");
driver.getTitle().then(function (title) {
console.log(title);
});
driver.quit();
但它会抛出错误:
fs.js:500 return binding.open(pathModule._makeLong(path),
stringToFlags(flags), mode);
^ Error: ENOENT, no such file or directory 'E:\Selenium\webdriver\logging.js'
at Error (native)
at Object.fs.openSync (fs.js:500:18)
at Object.fs.readFileSync (fs.js:352:15)
at Object.Context.closure.goog.retrieveAndExecModule_ (E:\Selenium\node_modules\selenium-webdriver\_base.js:129:23)
at <anonymous>:1:6
at Object.exports.runInContext (vm.js:64:17)
at Context.closure.closure.vm.createContext.CLOSURE_IMPORT_SCRIPT (E:\Selenium\node_modules\selenium-webdriver\_base.js:101:12)
at Object.goog.importScript_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:873:9)
at Object.goog.importModule_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:894:14)
at Object.goog.writeScripts_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:1251:16)
在 windows 上的 Selenium v2.46.0 中似乎有一个 bug。
它刚刚在 2.46.1 中修复,所以如果您更新它应该可以解决您的问题
更新
尝试将 selenium-webdriver
版本更改为 2.46.1
,它已被推送到 npm 并在其中修复了错误。
如@simon 所说,this bug 已在 github、
中报告
目前,在其评论中建议了一种破解方法作为解决方案,
转到 node_modules\selenium-webdriver\_base.js
,在行 100
和行 101
之间添加下面一行(作为 if 块的第一行):
opt_srcText = opt_srcText.replace(/\/g,'/');
它解决了我的问题。
问题已通过更新到版本 - 2.46.1 解决
我正在使用 Selenium 的 WebDriverJS 在 Windows 8.1 和 JavaScript 上自动化 Chrome。我下载了 ChromeDriver 和 Selenium Standalone Server jar 文件的副本并放在 E:\Selenium
目录中。我启动了 Selenium Standalone Server 并尝试 运行 我的 javascript 代码写在 BrowserTest.js
文件中,Node 命令提示符为
E:\Selenium> Node BrowserTest.js
BrowserTest.js
:
var driver = require("selenium-webdriver");
function createDriver() {
var driver = new driver.Builder()
.usingServer('http://localhost:4444/wd/hub')
.withCapabilities(driver.Capabilities.chrome())
.build();
driver.manage().timeouts().setScriptTimeout(10000);
return driver;
}
var driver = createDriver();
driver.get("http://www.google.com");
driver.getTitle().then(function (title) {
console.log(title);
});
driver.quit();
但它会抛出错误:
fs.js:500 return binding.open(pathModule._makeLong(path),
stringToFlags(flags), mode);
^ Error: ENOENT, no such file or directory 'E:\Selenium\webdriver\logging.js'
at Error (native)
at Object.fs.openSync (fs.js:500:18)
at Object.fs.readFileSync (fs.js:352:15)
at Object.Context.closure.goog.retrieveAndExecModule_ (E:\Selenium\node_modules\selenium-webdriver\_base.js:129:23)
at <anonymous>:1:6
at Object.exports.runInContext (vm.js:64:17)
at Context.closure.closure.vm.createContext.CLOSURE_IMPORT_SCRIPT (E:\Selenium\node_modules\selenium-webdriver\_base.js:101:12)
at Object.goog.importScript_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:873:9)
at Object.goog.importModule_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:894:14)
at Object.goog.writeScripts_ (E:\Selenium\node_modules\selenium-webdriver\lib\goog\base.js:1251:16)
在 windows 上的 Selenium v2.46.0 中似乎有一个 bug。
它刚刚在 2.46.1 中修复,所以如果您更新它应该可以解决您的问题
更新
尝试将 selenium-webdriver
版本更改为 2.46.1
,它已被推送到 npm 并在其中修复了错误。
如@simon 所说,this bug 已在 github、
中报告目前,在其评论中建议了一种破解方法作为解决方案,
转到 node_modules\selenium-webdriver\_base.js
,在行 100
和行 101
之间添加下面一行(作为 if 块的第一行):
opt_srcText = opt_srcText.replace(/\/g,'/');
它解决了我的问题。
问题已通过更新到版本 - 2.46.1 解决