带有geckodriver的Firefox无法在Ubuntu Server上启动

时间:2019-07-26 09:17:11

标签: node.js firefox selenium-webdriver geckodriver ubuntu-19.04

我有Ubuntu Server 19.04 64位。 我使用以下软件包:

  • nodejs v10.16.0
  • Mozilla Firefox 68.0.1

我在自己的node.js项目中安装了selenium-webdriver ^4.0.0-alpha.4

我还使用以下算法安装了geckodriver 0.24.0

sudo wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
tar -xvzf geckodriver
chmod +x geckodriver
sudo mv geckodriver /usr/local/bin/

我的项目具有带有以下代码的index.js:

const {Builder, By, Key, util} = require("selenium-webdriver");
const firefox = require('selenium-webdriver/firefox');
async function example() {
    let options = await new firefox.Options()
        .headless();
    let driver = await new Builder().forBrowser("firefox").setFirefoxOptions(options).build();
    await driver.get("https://mobile.facebook.com");  
    await driver.close();
}
example();

当我使用命令sudo node index.js启动脚本时,出现以下错误:

(node:1303) UnhandledPromiseRejectionWarning: WebDriverError: invalid argument: can't kill an exited process
    at Object.throwDecodedError (/var/nodejs/sites/test/node_modules/selenium-webdriver/lib/error.js:550:15)
    at parseHttpResponse (/var/nodejs/sites/test/node_modules/selenium-webdriver/lib/http.js:560:13)
    at Executor.execute (/var/nodejs/sites/test/node_modules/selenium-webdriver/lib/http.js:486:26)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:1303) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1303) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

错误:invalid argument: can't kill an exited process,我不知道该如何解决... 如果您需要有关我的情况的更多信息,请问我,我会尽力回答。

UPD:我尝试了最新版本的geckodriver和loock:

0.24.0:WebDriverError: invalid argument: can't kill an exited process

0.23.0:WebDriverError: invalid argument: can't kill an exited process

0.22.0:WebDriverError: invalid argument: can't kill an exited process

0.21.0:WebDriverError: Process unexpectedly closed with status 1

0.20.1:WebDriverError: Process unexpectedly closed with status 1

0.20.0:WebDriverError: Process unexpectedly closed with status 1

...

2 个答案:

答案 0 :(得分:0)

您需要更新Firefox浏览器,这可能是由于GeckoDriver与Firefox浏览器之间的不匹配所致。

如果这还是不起作用,请使用以下版本的壁虎驱动程序,请尝试使用第二和第三次更新的壁虎驱动程序版本。

这也是您的geckodriver没有退出并因此仍在运行的可能性之一,从而抑制了新会话的打开,您可以使用下面的文章杀死geckodriver进程

https://www.tecmint.com/find-and-kill-running-processes-pid-in-linux/

答案 1 :(得分:0)

因此,在对不同版本的geckodriver和farefox进行长时间测试之后,我解决了我的问题!

我只是试图将farefox降级到v57.0,但是我没有尝试使用新版本。 我偷了geckodriver 0.24.0。

有关降级的更多信息,请点击https://askubuntu.com/questions/661186/how-to-install-previous-firefox-version