python - lxc容器中的硒;WebDriverException:消息:无效参数:无法终止已退出的进程
问题描述
我正在尝试在 Ubuntu 18.04(amd64) LXC 容器中使用 Selenium。
Selenium 版本 3.14.1、firefox 版本 62.0.3、Python 2.7
我将geckodriver-v0.22.0-linux64.tar.gz 从https://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
我看到了这个类似的帖子,这个问题最终成为 Selenium、Firefox 和 GeckoDriver 之间的版本兼容性问题,但我认为这不是我的情况。
我用谷歌搜索和谷歌搜索没有运气。也看了几个github帖子,仍然没有运气。我希望这里有人能给我一些想法。
在容器中执行此操作可能存在问题。但是,我确实在一个普通的 Ubuntu 系统(不是在容器中)上尝试过这个并且得到了完全相同的问题。
解决方案
以防万一有人偶然发现并遇到类似问题,我的问题的根源是我最初使用 webdriver 的所有尝试都是从lxc exec <container> bash
或ssh
从不使用 ssh x11 转发的会话中进行的。在这两种情况下,python webdriver 都失败了,因为它实际上无法启动浏览器。我现在已经在几个不同的环境中运行它,都使用 x11 转发,并且它正在工作。
推荐阅读
- flutter - 即使Firestore有数据,也会颤动Firestore getter docs null
- apache - Apache 从哪里读取 $domain 变量?
- react-native - 如何使用 Vanilla JavaScript 和 MS Graph API 从 OneDrive 下载文件
- aws-cdk - 如何将多个 CodeCommit 源存储库添加到 CdkPipline
- python - 带有整数索引的 Numpy 双切片分配,后跟布尔索引
- greatest-common-divisor - 列表 L1 中每个元素的 TI-84 Plus CE gcd
- android - 使用 minifyEnabled 和 proguard 时如何将崩溃日志转换为可读形式?
- java - 使用 JasperFillManager.fillReport 方法得到“java.io.StreamCorruptedException: invalid stream header”
- assembly - ARM 汇编,在循环后使用 ldr 保持相同的 r2
- reactjs - 如何在类组件中使用 useSelector?