0

Firefox 自行升级到 47 版后,Selenium 停止工作。我按照 Mozilla 建议的有关 Marionette 驱动程序的 Javascript (Node.js) 步骤进行操作,但控制台说它在我当前的系统上找不到 Firefox,但是浏览器的路径很好且标准。错误是 C:\Users\\node_modules\selenium-webdriver\firefox\binary.js:115:11 处的“无法在当前系统上找到 Firefox”

如果重要的话,我会使用 WebdriverJS。

4

6 回答 6

0

我曾经发生过这种情况,而且似乎总是很随机。这是一个很长的镜头,但尝试改变路径,然后将原来的路径放回去,这在过去对我有用。

于 2016-06-14T18:13:12.297 回答
0

我遇到了类似的问题,并且看到GG 组中正在讨论的 Firefox 47 和 WebDriver(JS 和其他语言)似乎存在很多问题。您现在唯一的解决方案可能是降级 - https://ftp.mozilla.org/pub/firefox/releases/46.0.1/

诚然,降级并没有解决我的问题,但是 ymmv

于 2016-06-15T01:37:01.757 回答
0

我遇到了同样的问题,并通过从https://www.mozilla.org/en-US/firefox/developer/下载开发者版解决了它。显然在使用开发者版本的 Firefox 方面存在一些冲突。
在 node_modules/selenium-webdriver/firefox/binary.js,第 99 行,此代码:

let exe = opt_dev
        ? '/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin'
        : '/Applications/Firefox.app/Contents/MacOS/firefox-bin';
    found = io.exists(exe).then(exists => exists ? exe : null);

选择了DeveloperEdition,但是我没有,导致found为null,后来在第115行抛出错误。

于 2016-06-26T13:40:35.477 回答
0

会不会是你的 Firefox 没有安装在默认位置?我的安装在 中C:\Users\(username)\AppData\Local\Mozilla Firefox\,我收到与您相同的错误消息。

浏览代码(感谢@achie),我发现以下内容node_modules\selenium-webdriver\firefox\index.js

* On Windows and OSX, the FirefoxDriver will search for Firefox in its
* default installation location:
*
* * Windows: C:\Program Files and C:\Program Files (x86).
* * Mac OS X: /Applications/Firefox.app
*
* For Linux, Firefox will be located on the PATH: `$(where firefox)`.

换句话说,在 Windows 上将 Firefox 目录放在 PATH 变量中甚至没有任何用处。

但源代码继续:

* You can configure WebDriver to start use a custom Firefox installation with
* the {@link Binary} class:
*
*     var firefox = require('selenium-webdriver/firefox');
*     var binary = new firefox.Binary('/my/firefox/install/dir/firefox-bin');
*     var options = new firefox.Options().setBinary(binary);
*     var driver = new firefox.Driver(options);

就我而言,这变成:

var firefox = require('selenium-webdriver/firefox');
var binary = new firefox.Binary('C:\\Users\\(username)\\AppData\\Local\\Mozilla Firefox\\firefox.exe');
var options = new firefox.Options().setBinary(binary);
var driver = new firefox.Driver(options);

现在 Selenium 找到了我的 Firefox,但我收到了下一条错误消息:

Error: Timed out waiting for the WebDriver server at http://127.0.0.1:53785/hub

我也试过var driver = new webdriver.Builder().forBrowser('firefox').setFirefoxOptions(options).build();了,但这没有任何区别。

希望这可以进一步帮助您!

于 2016-07-08T14:05:35.117 回答
0

Mozilla 的人员建议使用 Marionette 驱动程序,因为 Selenium Webdriver 2.53 和 Firefox 47/48 存在启动崩溃问题

https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

于 2016-08-15T10:49:21.293 回答
0

最新的 Firefox 48 和 Selenium Webdriver 3.0.0 解决了这个特殊问题。

于 2016-08-25T16:11:43.057 回答