在xvfb上运行Selenium测试无法连接

时间:2017-01-30 11:53:37

标签: python selenium firefox selenium-webdriver xvfb

我试图运行一个使用Selenium Firefox webdriver运行多个测试的脚本。 它在本地机器上运行完美,但在xvfb上运行失败。

该机器是CentOS 6.8版(最终版) Firefox版本45.6.0

我使用Python / Marionette

该命令与此类似:

xvfb-run --server-args="-screen 0, 1920x1080x24" MyProgram

以这种方式运行我得到了几个与未加载页面相关的错误。 所以我得到了一些截图,我看到的只是"无法连接" Firefox屏幕。

起初我虽然它可能与代理相关......我已经暗示没有禁用代理和一个简单的" wget"会按预期工作。 但后来我在代码中强制使用Firefox首选项,所以它没有使用代理,当然,对吗?

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 0)

结果相同。 所以我用Google搜索了类似的情况,并找到了一些要求在命令行中添加显示号的答案。 所以我将命令行更改为:

export DISPLAY=:1
xvfb-run --server-args=":1 -screen 0, 1920x1080x24" MyProgram

然后我得到了一个不同的错误,但仍然无法正常工作:

ERROR: WebDriverException: connection refused Traceback (most recent call last):

我还尝试记录更多信息,将 -e 参数添加到xvfb-run,但我得到的只是一个空文件。

知道我还能尝试使其有效吗?

*更新*

这是一个重现问题的小代码

from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.proxy import *

display = Display(visible=0, size=(1920, 1080))
display.start()

profile = webdriver.FirefoxProfile()
profile.set_preference("network.http.phishy-userpass-length", 255);
profile.set_preference("network.proxy.type", 0)
capabilities = None
# Marionette not necessary as it's Firefox 45
# capabilities = DesiredCapabilities.FIREFOX 
# capabilities["marionette"] = True 
print("Getting webdriver...")
browser = webdriver.Firefox(firefox_profile=profile, capabilities=capabilities)

print("Requesting URL...")
browser.get('https://www.google.com')
print("TITLE:", browser.title)

browser.quit()
display.stop()

输出:

Getting webdriver...
Requesting URL...
TITLE: Problem loading page

0 个答案:

没有答案