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 v​​2.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 解决