2016-11-07 60 views
2

私はCentOSにFirefoxとSeleniumをインストールしました。私はXvfbとpyvirtualdisplayを使ってブラウザを開きます。許可が拒否されました: 'geckodriver.log'はPythonでSelenium Webdriverを実行中です

私はセレンwebdriverを実行しようとすると、私は新しいディスプレイを開くことができるんだけど、すぐに私は

browser = webdriver.Firefox()

がそうであるように、私はエラーを取得する:

File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 134, in __init__ 
    self.service = Service(executable_path, log_path=log_path) 
    File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/service.py", line 45, in __init__ 
    log_file = open(log_path, "a+") 
IOError: [Errno 13] Permission denied: 'geckodriver.log' 

任意の手掛かりここで何がうまくいかないの?

EDIT:パーミッションエラーを克服した後、私はどうやらこれはあなたのFirefoxとあなたのセレン間の非互換性から来ることができる

Message: 'geckodriver' executable needs to be in PATH

+1

スクリプトを実行しているユーザーは、スクリプトのパスに 'geckodriver.log'というファイルを作成する権限がありますか? –

+0

PCを実行している別のプロセスによって既に開かれているため、このログファイルに書き込むはずはありません(セレンを使用しているときに自分のPythonプログラムであると推測できます)。 –

+0

@IvanChaer:スーパーユーザーとしてログインしていて、 "sudo"を使ってSeleniumをインストールしました。私はpythonシェルとwebdriverのものとして許可を求めるスクリプトでコマンドを実行しています。 –

答えて

2

を取得しています。 pip install --upgrade seleniumを試してください。エラーがまだ残っている場合は、downloading a different version of Firefoxまたはgecko driverを試してください。あなたがスクリプトにドライバのパスを設定することができ

'geckodriver' executable needs to be in PATH 

ff_profile_dir = "/usr/local/selenium/webdriver/firefox" 
ff_profile = selenium.webdriver.FirefoxProfile(profile_directory=ff_profile_dir) 
driver = selenium.webdriver.Firefox(ff_profile) 

あるいは、this answerによると、あなたが上で、Unixシステム上で、実行できるメッセージについて

bashの互換シェル:

export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step 

On Windows you will need to update the Path system variable to add the full directory path to the executable geckodriver manually or command line(don't forget to restart your system after adding executable geckodriver into system PATH to take effect). The principle is the same as on Unix.

+0

ありがとうございます。私は前述のようにPATHにgeckodriverを追加しました。 その後、 'browser = webdriver.Firefox()'を実行すると、 'selenium.common.exceptions.WebDriverExceptionが発生します。メッセージ:connection refused' –

+0

geckodriverを/ usr/local/binに移動するとそのトリックが実行されました。どうもありがとう! –

1

私は同じ問題を抱えていました。私はIvan Chaerの答えを使ってみましたが、うまくいきませんでした。私は最終的に実用的な解決策に出くわすまで、他のものをたくさん試しました。私がSeleniumを動かそうとしていた頃、私は対話シェルを使っていました。私はスクリプトにコードを入れて、代わりにそれを実行しようとすると、すべて正常に働いた。

「geckodriver.log」という名前のファイルがスクリプトと同じディレクトリに作成されていることがわかりました。それは私にアイデアを与えました。 C:\ Program Files \ Python36に「geckodriver.log」ファイルを作成し、FirefoxでSeleniumを使用してもエラーが発生しなくなりました。

0

次の解決策が私のために働いた。私の場合は、WindowsのNotepad++アプリケーションからPythonスクリプトを開始していました。私のgeckodriver.exeはPATHにあり、私のC:\Python 27フォルダに置かれていました。 Firefoxへのフルパスも提供されました。 Selenium、geckodriver、Firefoxはすべて最新のバージョンです。

それはgeckodriver.logファイルは、ここで作成されていたことが判明:

C:\Program Files (x86)\Notepad++\geckodriver.log 

私は管理者としてNotepad++を実行することでこれを見つけました。その後、必要な場所にファイルを作成することができました。私はファイルを見つけて、Windows上の通常のユーザーアカウントのファイルアクセス権をフルアクセスに変更しました(読み取り専用に設定されていました)。

これを実行した後、私は通常Notepad ++を実行することができ、エラーはなくなりました。

関連する問題