搜索了很多,但在博客中并没有搜索到,所以分享给大家。
找到的第一处是简书中某位作者给出的见解。
[添加链接描述](https://www.jianshu.com/p/265c0a5afe20)
如下是他(她)的回答:
如以下错误:
1.selenium.common.exceptions.WebDriverException: Message: invalid argument: can’t kill an exited process
2.或selenium.common.exceptions.WebDriverException:Message: Process unexpectedly closed with status:
1selenium出现这个错误是因为脚本在root用户下运行导致,若你用的是firefox,firefox geckodriver的log中出现以下错误提示:Running Firefox as root in a regular user’s session is not supported. ($HOME is /root which is owned by www.)
使用chrome也有类似报错;明确原因是Firefox不支持root用户;
解决方案:
1.新建新用户
2.在新用户下运行相应的脚本
3.如果有文件的读写权限问题,请赋予相应的权限
作者:OCeasyLife
链接:https://www.jianshu.com/p/265c0a5afe20
来源:简书
因为自己对Linux操作系统不是那么收悉,以至于搜索了如何新建新用户后的教程后,我还是感觉太麻烦了。
人总不可能被尿憋死,对吧。
我点开geckodriver.log文件(日志文件)后发现:
DISPLAY not set
翻译后的意思就是:你没有设置显示环境啦,所以要报错啦~
大致是这个样子,具体我也记不太清了,嘿嘿。
原因是我们采取的自动化方式目前用的都会弹出游览器,以便我们更直观的看到代码运行情况。但我们没有设置显示环境。
那我们设置下不就好啦,考虑到Linux服务器没什么显示界面,干脆咱就把界面给消除了算了。
于是又如下解决方法:
第一步:安装Xvfb和pyvirtualdisplay
yum install xorg-x11-server-Xvfb
#这里输入进去后会有y/n还有个什么缩写,你需要输入y(代表同意)会有三次还是两次,一直到窗口弹出完毕
pip install pyvirtualdisplay
第二步:在原代码上做出调整(我这里给全的框架,你们对号入座)
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(900, 800))
display.start() #显示界面的设置
driver = webdriver.Firefox(executable_path='geckodriver')
driver.close
display.stop