Marionetteのpythonクライアントを使って最新Firefoxの操作を自動化する

Firefoxブラウザを自動で操作したり、Webアプリケーションのテストを自動化するには、Seleniumが使われることも多いですが、Ver47以降のFirefoxには、「Marionetteサーバ」という自動操作の機能が備わっています。

この「Marionetteサーバ」とは、Firefoxのレンダリングエンジンの「gecko」に組み込まれており、Firefoxの技術チームもこの仕組みを利用して、Firefoxの開発のテストを行っているそうです。

Selenium3からは、FirefoxのWebDriverも別途geckodriverとして提供されるようになっており(以前はSeleniumに内蔵されてました)、Marionetteをサポートしています。Firefoxでは今後、Marionetteを使った自動化が積極的に行われていくと思われます。

そこで今回は、Pythonを使って、Marionetteサーバ経由でFirefoxを自動操作してみます。

 

PythonクライアントによるFirefox自動化の環境構築

① Pythonクライアントの用意

はじめにMarionette用のPythonクライアントを用意します。なお、パッケージ自体はpipでインストールすることが可能ですが、2017年5月現在では、python2しか対応していないようで、python3だとpipインストール時にエラーになってしまいます。

また、パッケー同士の衝突などを防ぐために、virtualenv等で、独立した環境をつくると良いです。(virtualenvでの複数環境の設定はこの記事を参考に)私はpyhton2のvirtualenv環境でインストールしました。

pip install marionette_driver

 

② Marionetteを有効化したFirefoxを起動しておく

では、早速、Pythonクライアントを使ってFirefoxを操作してみます。はじめにMarionetteを有効化したFirefoxブラウザを起動しておきます。

PC版のFirefoxはデフォルトでMarionetteの機能は内蔵されていますが、起動時のオプションで有効化してあげる必要があります。

「ファイル名を指定して実行」(※Windows10などでは、「Windowsボタン+R」)で以下のように、「-marionette」オプション付きで起動します。

firefox -marionette -P "default"

 

③ pythonクライアントのコードを書いて実行

Firefoxを起動してあれば、以下のようなプログラムを.pyファイルにかいて、実行してあげると、自動でサイトに行ってくれます。

 

from marionette_driver.marionette import Marionette

client = Marionette('localhost', port=2828)
client.start_session()

client.execute_script("alert('o hai there!');")

 

コメントを残す

サブコンテンツ

このページの先頭へ