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

下一篇: php selenium webdriver run firefox on centos7.2