如何在Xvfb上运行无头Firefox

6

我正在尝试使用geckodriver运行webdriver。 我已经安装了selenium gecko,Firefox和python27。 我的文件夹中有脚本和geckodriver。

当我从CentOS运行命令“python script.py”时,它会显示:

selenium.common.exceptions.WebDriverException: Message: Failed to start browser: permission denied

以下是我使用的脚本:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('/usr/local/firefox')
display = Display(visible=0, size=(800, 600))
display.start()

browser = webdriver.Firefox(firefox_binary=binary)

browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

在你询问之前,当我运行whereis firefox时,我得到了firefox: /usr/local/bin/firefox /usr/local/firefox

编辑:

在我运行sudo yum -y install firefox Xvfb libXfont Xorg之后,Python脚本启动了,但是我在geckdriverlog上收到了一个错误提示:

XPCOMGlueLoad error for file /usr/local/firefox/libxul.so:
libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
Couldn't load XPCOM.

我认为这是由于 bug引起的。因此我尝试了sudo yum install libdbus-glib-1-2但它说:No package libdbus-glib-1-2 available. 编辑2: 所以也许我应该问(这可能是问题的答案);如何使用终端从这里获取lib并在CentOS上安装libdbus-glib-1-2编辑3: 所以基本上要运行无头Firefox,我需要Xvfb,但当我运行Xvfb:19-screen 0 1024x768x16&时,我卡在Initializing built-in extension GLX上,就像这个问题一样。因此,我认为问题归结为如何在Xvfb上运行无头Firefox。
最后,我只想说,Firefox版本的事情真是一团糟。

你用的是Mac吗? - Shubham Jain
不在CentOS上。 - John James
你的问题只出现在无头模式下吗?还是在有头模式下也会出现错误? - Hiten
我无法以完整模式运行,因为这只是一个AWS服务器。 - John James
我真的不知道该怎么办,因为赏金将在13小时内结束,我仍然没有得到正确的答案。 - John James
1个回答

0

发现其他人也遇到了同样的问题,虽然你尝试了which命令,但你能检查一下/usr/local/bin/firefox/firefox是否可用吗?


我尝试过了(自从我更新了一些东西后,请再次检查问题,现在编辑中显示错误)。 - John James
不使用任何配置文件,而是使用browser = webdriver.Firefox()怎么样? - Eric
那已经不是问题了,因为当我在终端中输入 firefox 时会出现 libdbus-glib-1.so.2: cannot open shared object file: No such file or directory Couldn't load XPCOM. 的错误提示。所以我认为现在就是这个问题。 - John James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接