我们有一个Python Selenium Webdriver脚本,从命令行运行时效果很好。但是,当由cronjob运行时,代码似乎有所不同,并且脚本挂起。
python脚本滚动网页并存储信息。当通过cronjob运行时,浏览器滚动到页面底部,然后浏览器冻结,脚本挂起。不会产生任何错误消息。
cronjob会触发一个shell脚本,其中包含以下内容:
#!/bin/sh
adddate() {
while IFS= read -r line; do
echo "$(date) $line"
done
}
cd /home/user
export DISPLAY=:0.0
python webdriver.py 2>&1 | adddate >> /home/user/log
我怀疑问题出在python代码中,因为它从命令行运行时效果很好。 cronjob属于能够从命令行运行脚本的同一用户。 python代码中的所有导入似乎都运行正常。
修改: 我正在向下滚动页面,当您向下滚动页面时,javascript会加载内容:
browser = webdriver.Firefox()
--
--
keep_scrolling = None
while keep_scrolling is None:
try:
keep_scrolling = browser.find_element_by_class_name('name_of_the_desired_class')
except:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
它向下滚动页面,当它找到类名时,它会冻结......也就是说,当脚本由cron运行时(但是从命令行运行时效果很好)。