Python脚本使用launchd和Selenium失败

时间:2016-08-24 00:35:51

标签: python python-2.7 selenium launchd selenium-firefoxdriver

我试图在OS X 10.10.5中使用launchd运行一个简单的脚本但是作业失败了。我认为它与未正确设置的权限/权限有关?

这是它引发的错误代码:

  

追踪(最近一次通话):     File&#34; /Users/John/Documents/AutoRun/OpenTwitter.py" ;,第7行,在       driver = webdriver.Firefox()     File&#34; /Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/webdriver.py" ;,第64行,初始化       self.service =服务(executable_path,firefox_binary = self.options.binary_location)     File&#34; /Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/service.py" ;,第44行,初始化       log_file = open(log_path,&#34; a +&#34;)   IOError:[Errno 13]权限被拒绝:&#39; geckodriver.log&#39;   例外属性错误:&#34;&#39;服务&#39;对象没有属性&#39; log_file&#39;&#34;在<bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x10ca6bdd0>>忽略了

我确实得到了打印的&#34;启动脚本&#34;在我已经硬编码到我的脚本的控制台job.out中,所以我认为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.List如下:

<?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>

注意:我更改此代码在launchd中运行的时间,以便我可以测试。

1 个答案:

答案 0 :(得分:0)

我已经设法通过将geckodriver放在/ usr / bin中来实现它的工作

  1. 将文件移至/ usr / bin目录:sudo mv chromedriver / usr / bin
  2. 转到/ usr / bin目录,您需要运行类似&#34; chmod a + x geckodriver&#34;将其标记为可执行文件。
  3. 我认为无法找到驱动程序的PATH并停止脚本死机。