Selenium脚本从控制台工作,不在CRON中工作
我有从SH文件运行的Selenium脚本。 当我从控制台运行sh文件时,它工作得很好,但从Cron作业运行的同一文件失败。
SH文件:
#!/bin/sh
export DISPLAY=:10
cd /home/user
python3 selenium.py > /home/user/selenium.log 2>&1
我遇到的错误是众所周知的:
Traceback(最近一次调用最后一次):启动stdout = self.log_file中的文件“/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py”,第74行,stderr = self .log_file)文件“/usr/lib/python3.5/subprocess.py”,第947行,在init restore_signals,start_new_session中)文件“/usr/lib/python3.5/subprocess.py”,第1551行,在_execute_child中raise child_exception_type(errno_num,err_msg)FileNotFoundError:[Errno 2]没有这样的文件或目录:'geckodriver'
在处理上述异常期间,发生了另一个异常:
Traceback(最近一次调用最后一次):文件“so_login.py”,第12行,在setUp self.driver = webdriver.Firefox()文件中“/usr/local/lib/python3.5/dist-packages/selenium/webdriver/ firefox / webdriver.py“第142行,在init self.service.start()文件”/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py“中,第81行,在开始os.path.basename(self.path),self.start_error_message)selenium.common.exceptions.WebDriverException:消息:'geckodriver'可执行文件需要在PATH中。
我在控制台也有这个错误,但是我通过安装geckodriver并将它移动到/ usr / local / bin来解决它,它从控制台正常工作,但它为什么不能从CRON工作?
考虑使用pyvirtualdisplay为你管理你的窗口会话
用pip安装它
$ pip install pyvirtualdisplay
然后在代码中添加如下内容:
from pyvirtualdisplay import Display
def main():
# Display creates a virtual frame buffer and manages it for you
with Display(visible=False, size=(1200, 1500)):
# Run the test of your code here
# When your code is finished and exits the with block, the with
# context manager cleans up the virtual display for you
if __name__ == "__main__":
main()
链接地址: http://www.djcxy.com/p/62759.html
上一篇: Selenium script working from console, not working in CRON