2016-08-24 25 views
1

OS X 10.10.5でlaunchdを使用して単純なスクリプトを実行しようとしていますが、ジョブが失敗します。私はそれが正しく設定されていないアクセス許可/権限と関係があると思いますか?launchdとSeleniumを使用してPythonスクリプトが失敗する

これは、それがアップスローエラーコードです:

Traceback (most recent call last): File "/Users/John/Documents/AutoRun/OpenTwitter.py", line 7, in driver = webdriver.Firefox() File "/Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/webdriver.py", line 64, in init self.service = Service(executable_path, firefox_binary=self.options.binary_location) File "/Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/service.py", line 44, in init log_file = open(log_path, "a+") IOError: [Errno 13] Permission denied: 'geckodriver.log' Exception AttributeError: "'Service' object has no attribute 'log_file'" in <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x10ca6bdd0>> ignored

私は私が私のスクリプトにハードコードしましコンソールjob.outで「スクリプトを起動し、」印刷されたのですか、私はlaunchdのが実際であると仮定スクリプトを起動してもOKですが、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の中で実行するには、このコードのための時間を変更します私はテストすることができます。

+0

あなたは正確に正しいです。権限が不足しているため、スクリプトが正しく実行されなくなります。あなたの質問にもlaunchdの.plistも含めることをお勧めします。 –

+0

あなたのフィードバックをお寄せいただきありがとうございます。元の質問にp.listコードを追加しました。なぜパーミッションが正しく設定されていないのか、どのようにファイルを設定するのか – Kiwi

+0

これをlaunchagentまたはlaunchdaemonとして起動し、どのディレクトリが.plistにありますか? –

答えて

0

は私が、/ usr/binに

  1. 移動は/ usr/binディレクトリにファイルをgeckodriverを置くことによって動作するようにそれを得ることができた:sudoのMV chromedriverは/ usr/binに
  2. 後藤/ usr/binディレクトリにあり、実行可能とマークするには "chmod a + x geckodriver"のようなものを実行する必要があります。

ドライバにPATHを見つけてスクリプトが死んでしまうのを止めるのに問題があったと思います。

関連する問題