質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2809閲覧

Selenium の driver (Firefox) 取得でエラー

rjberger19

総合スコア33

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/10/16 12:38

cronを使ったSelenium において、Firefox の Driver取得でエラーが出てしまいます。
PATHが通っていないだけだとは思うのですが、どのように対応していいかわかりません。。

【分かっていること】
①VSCode上でpwdを実行したときに表示されるカレントディレクトリ:/Users/xxx/Documents/Python
②macのTerminal上でpwdを実行したときに表示されるカレントディレクトリ:/Users/xxx

上記のディレクトリにいる状態で以下を実行すると問題なく動作します。

Termianl

1/usr/local/bin/python3 /Users/xxx/Documents/Python/GetQuartelyData.py

Python

1def get_driver_FireFox2(downloadPath,headlessflag): 2 3 # coding: utf-8 4 import os 5 from selenium import webdriver 6 7 options = Options() 8 if headlessflag == True: 9 options.add_argument('-headless') 10 fp = webdriver.FirefoxProfile() 11 fp.set_preference("browser.download.folderList", 2) 12 fp.set_preference("browser.download.dir", downloadPath) 13 # ダウンロードマネージャウィンドウを表示させない 14 fp.set_preference("browser.download.manager.showWhenStarting", False) 15 # MIMEタイプを設定 16 # fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream") 17 fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/vnd.ms-excel") 18 19 try: 20 driver = webdriver.Firefox(firefox_options=options,firefox_profile=fp) 21 except: 22 t = traceback.format_exc() 23 text_file = open("errormessage.txt", "w") 24 text_file.write(t) 25 text_file.close() 26 return driver 27 28 29get_driver_FireFox2("/Users/Download",True)

なのですが、cronに以下のように記載すると以下のエラーが発生します。

cron

144 16 * * * /usr/local/bin/python3 /Users/xxx/Documents/Python/GetQuartelyData.py

errorcode

1Traceback (most recent call last): 2 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 72, in start 3 self.process = subprocess.Popen(cmd, env=self.env, 4 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/subprocess.py", line 951, in __init__ 5 self._execute_child(args, executable, preexec_fn, close_fds, 6 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/subprocess.py", line 1821, in _execute_child 7 raise child_exception_type(errno_num, err_msg, err_filename) 8FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver' 9 10During handling of the above exception, another exception occurred: 11 12Traceback (most recent call last): 13 File "/Users/xxx/Documents/Python/get_driver_fx.py", line 40, in get_driver_FireFox2 14 driver = webdriver.Firefox(firefox_options=options,firefox_profile=fp) 15 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__ 16 self.service.start() 17 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 81, in start 18 raise WebDriverException( 19selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

補足として、cronで実行したときに上記エラーファイルが吐き出されるディレクトリが/Users/xxxの下に保存されます。

どのようにコマンドをTermianlで叩けば問題なく実行できるようになるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

処理が成功するディレクトリ上で以下を実行し、使用しているgeckodriverの場所を確認し、

Termianl

1which geckodriver

このように出力されたのですが、

/usr/local/bin/geckodriver

driverを取得するときに明示的にgeckodriverのディレクトリを書くことで成功しました。

Python

1driver = webdriver.Firefox(firefox_options=options,firefox_profile=fp)

Python

1driver = webdriver.Firefox(firefox_options=options,firefox_profile=fp,executable_path='/usr/local/bin/geckodriver')

投稿2021/10/16 12:57

rjberger19

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問