【问题标题】:Selenium get stuck while connecting to FirefoxSelenium 在连接到 Firefox 时卡住
【发布时间】:2014-09-02 12:33:56
【问题描述】:

我正在使用 Python 3 和 Django 1.6 开发一个网站。我想创建一个视图,它将我网站中的特定元素呈现为 png。因此,我使用 Selenium 远程控制 Firefox 从我的网络服务器获取特定页面并获取响应的屏幕截图。为此目的编写了以下代码:

def do_get(self, *args, **kwargs):
    from pyvirtualdisplay import Display
    from selenium import webdriver
    import base64

    display = Display(visible=0, size=(200, 100))
    display.start()

    browser = webdriver.Firefox()
    browser.get('http://www.google.com')
    response = base64.b64decode(browser.get_screenshot_as_base64())
    browser.quit()

    display.stop()

    return HttpResponse(content=response, mimetype='image/png')

问题是,如果我直接以 root 身份通过 python3 控制台运行代码,一切正常。但是我的 apache 与没有 root 权限的不同用户一起工作。当我尝试用这个用户执行代码时,代码卡在了行中

browser = webdriver.Firefox()

似乎 Selenium 无法连接到 Firefox,当我中断执行时出现以下回溯:

Traceback (most recent call last):
 File "test.py", line 6, in <module>
   browser = webdriver.Firefox()
 File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
   self.binary, timeout),
 File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
   self.binary.launch_browser(self.profile)
 File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 60, in launch_browser
   self._start_from_profile_path(self.profile.path)
 File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 83, in _start_from_profile_path
   env=self._firefox_env).communicate()
 File "/usr/lib/python3.4/subprocess.py", line 936, in communicate
   stdout = _eintr_retry_call(self.stdout.read)
 File "/usr/lib/python3.4/subprocess.py", line 487, in _eintr_retry_call
   return func(*args)

这似乎是用户权限问题,因此我将已安装的 firefox 的所有者更改为我的 apache 用户。我可以使用该用户从控制台运行 Firefox,但使用网络服务器时问题仍然存在。我的服务器正在运行 Ubuntu 14.04 LTS 实例。

有什么想法吗?

【问题讨论】:

    标签: django firefox ubuntu selenium python-3.x


    【解决方案1】:

    您使用的是最新版本的 Firefox 吗?我今天早上升级到32版,不再支持webdriver插件。

    Mozilla 支持 suggests 使用 Chrome 而不是降级 :-(

    【讨论】:

    • 在偶然发现这个问题后,我将 FF 降级到 30 版,基本上可以正常工作。我已经给了 Chrome 一个简短的尝试,但是建立从 selenium 到 Chrome 的连接比 FF 更难。除此之外,这似乎是一个权限问题,我接近解决方法,希望我可以让它运行。感谢您的回答!
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2022-10-18
    • 2021-09-11
    • 1970-01-01
    • 2020-11-20
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多