【问题标题】:Selenium in lxc container; WebDriverException: Message: invalid argument: can't kill an exited processlxc容器中的硒; WebDriverException:消息:无效参数:无法终止已退出的进程
【发布时间】:2018-10-17 23:15:00
【问题描述】:

我正在尝试在 Ubuntu 18.04(amd64) LXC 容器中使用 Selenium。
硒版本 3.14.1, 火狐 62.0.3 版, Python 2.7

我安装了 geckodriver-v0.22.0-linux64.tar.gzhttps://github.com/mozilla/geckodriver/releases 到 /usr/local/bin (在我的路径中)

当我尝试导入驱动程序时,出现以下错误:

>>> from selenium import webdriver
>>> driver = webdriver.Firefox()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 253, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 324, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process

我看到this 类似的帖子,问题最终是 Selenium、Firefox 和 GeckoDriver 之间的版本兼容性问题,但我认为这不是我的情况。

我用谷歌搜索了又谷歌,但都没有运气。也看了几个github帖子,仍然没有运气。我希望这里有人能给我一些想法。

在容器中执行此操作可能存在问题。但是,我确实在普通的 Ubuntu 系统(不是在容器中)上尝试了这个,并遇到了完全相同的问题。

【问题讨论】:

  • 这可能是一个愚蠢的问题,但你是如何安装它的?您是否解压缩了 tar.gz 并授予了二进制文件的执行权限?
  • @SantiagoBruno 我从网站上下载了它,将其解压并将其复制到我的路径中。它在一个 lxc 容器中,所以一切都以 root 身份运行并具有 root 权限,并且二进制文件对所有用户都具有执行权限。权限应该没问题。
  • 我刚刚在我身边的一台 Linux 笔记本电脑上尝试了一个快速测试程序。我做了所有相同的步骤,它奏效了。做那个测试我意识到它实际上启动了浏览器。我想知道它是否与在没有显示的 lxc 中运行它有关。我在上面运行这个有同样问题的服务器实际上可能是 Ubuntu 的服务器版本(缺少显示管理器),但我不能 100% 确定。
  • 您应该始终以非root用户身份执行您的@Test。
  • @DebanjanB 如前所述,这是在容器中运行的。唯一的用户是 root,因为我没有设置其他用户,因为没有理由这样做。在这种情况下以非 root 身份运行的建议是无关紧要的。

标签: python selenium firefox geckodriver lxc


【解决方案1】:

以防万一有人偶然发现并遇到类似问题,我的问题的根源是我最初使用 webdriver 的所有尝试都是从 lxc exec &lt;container&gt; bashssh 会话而不使用 ssh x11转发。在这两种情况下,python webdriver 都失败了,因为它实际上无法启动浏览器。我现在在几个不同的环境中运行它,都使用 x11 转发,并且它正在工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-11
    • 2019-03-03
    相关资源
    最近更新 更多