Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本使用launchd和Selenium失败_Python_Python 2.7_Selenium_Launchd_Selenium Firefoxdriver - Fatal编程技术网

Python脚本使用launchd和Selenium失败

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

我正在尝试使用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'对象在
中没有属性'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中,从而使其正常工作

  • 将文件移动到/usr/bin目录:sudo mv chromedriver/usr/bin
  • 转到/usr/bin目录,您需要运行类似“chmoda+xgeckodriver”的东西来标记它为可执行文件

  • 我认为它在找到驱动程序的路径和停止脚本时遇到了困难

    我把geckodriver放在/usr/bin中,成功地让它工作了

  • 将文件移动到/usr/bin目录:sudo mv chromedriver/usr/bin
  • 转到/usr/bin目录,您需要运行类似“chmoda+xgeckodriver”的东西来标记它为可执行文件

  • 我认为它在找到驱动程序的路径和停止脚本时遇到了困难

    你完全正确;缺少权限正在阻止脚本正常执行。我建议您在问题中也包括启动的.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