Python脚本使用launchd和Selenium失败
我正在尝试使用OSX10.10.5中的launchd运行一个简单的脚本,但是作业失败了。我认为这与权限/特权设置不正确有关 这是它抛出的错误代码: 回溯(最近一次呼叫最后一次): 文件“/Users/John/Documents/AutoRun/OpenTwitter.py”,第7行,在 driver=webdriver.Firefox() 文件“/Library/Python/2.7/site packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/webdriver.py”,第64行,在init self.service=service(可执行文件路径,firefox\u二进制文件=self.options.binary\u位置) 文件“/Library/Python/2.7/site packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/service.py”,第44行,在init 日志文件=打开(日志路径,“a+”) IOError:[Errno 13]权限被拒绝:“geckodriver.log” 异常AttributeError:“'Service'对象在Python脚本使用launchd和Selenium失败,python,python-2.7,selenium,launchd,selenium-firefoxdriver,Python,Python 2.7,Selenium,Launchd,Selenium Firefoxdriver,我正在尝试使用OSX10.10.5中的launchd运行一个简单的脚本,但是作业失败了。我认为这与权限/特权设置不正确有关 这是它抛出的错误代码: 回溯(最近一次呼叫最后一次): 文件“/Users/John/Documents/AutoRun/OpenTwitter.py”,第7行,在 driver=webdriver.Firefox() 文件“/Library/Python/2.7/site packages/selenium-3.0.0.b2-py2.7.egg/selenium/webd
中没有属性'log\u file'”被忽略
我确实在控制台作业中得到了打印的“启动脚本”。我已经将其硬编码到脚本中,所以我假设launchd实际上启动了脚本,但它在Selenium/Firefox驱动程序中遇到了问题?这就是我的权限问题发挥作用的地方
它在IDE/run和终端中运行良好
以下是我尝试运行的测试代码:
#!/usr/bin/python
from selenium import webdriver
print("start script")
driver = webdriver.Firefox()
driver.get("https://twitter.com/search?q=news&src=typd&lang=en")
print("twitter open, done")
p.清单如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>JohnsJob.job</string>
<key>Program</key>
<string>/Users/John/Documents/AutoRun/OpenTwitter.py</string>
<key>StandardErrorPath</key>
<string>/tmp/JohnsJob.job.err</string>
<key>StandardOutPath</key>
<string>/tmp/JohnsJob.job.out</string>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>14</integer>
<key>Weekday</key>
<integer>3</integer>
</dict>
</array>
</dict>
</plist>
标签
约翰·乔布
节目
/Users/John/Documents/AutoRun/OpenTwitter.py
标准错误路径
/tmp/JohnsJob.job.err
标准门诊
/tmp/JohnsJob.job.out
StartCalendarInterval
时辰
10
分钟
14
周工作日
3.
注意:我更改了此代码在launchd中运行的时间,以便进行测试。我已将geckodriver放入/usr/bin中,从而使其正常工作
我认为它在找到驱动程序的路径和停止脚本时遇到了困难 我把geckodriver放在/usr/bin中,成功地让它工作了
我认为它在找到驱动程序的路径和停止脚本时遇到了困难 你完全正确;缺少权限正在阻止脚本正常执行。我建议您在问题中也包括启动的.plist。感谢您的反馈,我已经在原始问题中添加了p.list代码,您知道为什么权限设置不正确和/或如何/在哪个文件上设置权限吗?您是作为launchagent还是launchdaemon启动此文件的,.plist位于哪个目录?它位于/Users/John/Library/LaunchAgents中-我认为它是一个“用户代理”,这是它在launchd中告诉我的(我是新手,所以不确定这是否是正确的答案)。这些可能很难在第一次就正确,可能需要尝试一些不同的事情。我会从.plist开始,可能会尝试将
Program/Users/John/Documents/AutoRun/OpenTwitter.py
更改为programmarguments/python/Users/John/Documents/AutoRun/OpenTwitter.py
您完全正确;缺少权限正在阻止脚本正常执行。我建议您在问题中也包括启动的.plist。感谢您的反馈,我已经在原始问题中添加了p.list代码,您知道为什么权限设置不正确和/或如何/在哪个文件上设置权限吗?您是作为launchagent还是launchdaemon启动此文件的,.plist位于哪个目录?它位于/Users/John/Library/LaunchAgents中-我认为它是一个“用户代理”,这是它在launchd中告诉我的(我是新手,所以不确定这是否是正确的答案)。这些可能很难在第一次就正确,可能需要尝试一些不同的事情。我将从.plist开始,并尝试将Program/Users/John/Documents/AutoRun/OpenTwitter.py
更改为programmarguments/python/Users/John/Documents/AutoRun/OpenTwitter.py