繁体   English   中英

Python脚本使用launchd和Selenium失败

[英]Python script fails using launchd and Selenium

我试图在OS X 10.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(executable_path,firefox_binary = self.options.binary_location)文件”/ Library / Python /2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/service.py“,第44行,在init log_file = open(log_path,”a +“)IOError:[ Errno 13]权限被拒绝:'geckodriver.log'异常AttributeError:“'服务'对象在<bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x10ca6bdd0>>没有属性'log_file'” <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x10ca6bdd0>>被忽略

我确实在控制台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中运行的时间,以便我可以测试。

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

  1. 将文件移动到/ usr / bin目录:sudo mv chromedriver / usr / bin
  2. 转到/ usr / bin目录,你需要运行类似“chmod a + x geckodriver”的东西来标记它的可执行文件。

我认为它很难找到驱动程序的PATH并停止脚本死机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM