MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

コマンドラインから Firefox をリフレッシュする方法
https://forums.mozillazine.jp/viewtopic.php?f=2&t=17132
ページ 11

作成者:  Mattsun [ 2018年7月05日(木) 14:21 ]
記事の件名:  コマンドラインから Firefox をリフレッシュする方法

こんにちは.お世話になります.
CLI で Firefox をリフレッシュすることはできるでしょうか.

現在 Firefox をヘッドレスモードで起動し (firefox --headless <URL>),JavaScript コードを実行する実験を行っています.
その過程で,ヘッドレスモードでの起動 → 終了を 5 回ほど繰り返すと,Firefox が正常に動作しなくなるという現象に出会いました.
コマンド実行後のコンソールには,通常通り「*** You are running in headless mode.」と表示されているのですが,ページに埋め込まれている JS コードが実行されない状況です.

このとき,GUI で Firefox を起動すると,ホームが表示される代わりに「Firefox Safe Mode」というウィンドウが表示されます.
メッセージには,セーフモードで起動するか Firefox をリフレッシュするか選択するように書かれています.
メッセージに従って Firefox をリフレッシュすると,その後は再びヘッドレスモードで正常にスクリプトが実行できるようになります.

根本的な解決にはなりませんが,とりあえず定期的に Firefox をリフレッシュしながら実験を行いたいのですが,実験はプログラムからコントロールしたいため,コマンドラインからリフレッシュしたいと考えています.
そのようなオプションやコマンドは用意されていますでしょうか.

長くなりましたが,状況は以上のようになります.
version: Mozilla Firefox 60.0.2

宜しくお願いいたします.

作成者:  Mattsun [ 2018年7月05日(木) 14:58 ]
記事の件名:  Re: コマンドラインから Firefox をリフレッシュする方法

追記

書き忘れていましたが,OS は Ubuntu 16.04 になります.
宜しくお願いいたします.

作成者:  EarlgreyTea [ 2018年7月05日(木) 20:29 ]
記事の件名:  Re: コマンドラインから Firefox をリフレッシュする方法

Mattsun さんが書きました:
現在 Firefox をヘッドレスモードで起動し (firefox --headless <URL>),JavaScript コードを実行する実験を行っています.
ヘッドレスモードは使ったことがないのですが、MDN Web Docsでは、Node.jsとselenium-webdriverを使った例が紹介されていますね。
Linux 環境を用意するのが面倒だったので、とりあえず Windowsのコマンドプロンプト環境で試してみました。

コード:
firefox.exe --headless --screenshot ss.jpg https://www.yahoo.co.jp/
これだと、Yahoo!トップのスクリーンショットを保存して終了するのですが、
コード:
firefox.exe --headless https://www.yahoo.co.jp/
URLだけだとプロセスが動きっぱなしで、画面が出ないので終了させるにはプロセスをkillする必要がありました。

Mattsun さんが書きました:
その過程で,ヘッドレスモードでの起動 → 終了を 5 回ほど繰り返すと,Firefox が正常に動作しなくなるという現象に出会いました.
Linux では状況は違うかもしれませんが、バックグランドプロセスが溜まってるとかはないでしょうか。

Mattsun さんが書きました:
コマンドラインからリフレッシュしたいと考えています.
そのようなオプションやコマンドは用意されていますでしょうか.
リフレッシュを実行するコマンドラインオプションは無いかと思います。(ちなみに --help で一覧出ます)
上の現象との関連はわかりませんが、もしプロファイルを初期化すればいいのであれば、--profile <path> でプロファイルのパスを指定してみるのはどうでしょう。
あらかじめ必要な既定値を用意したプロファイルを作っておき、テストごとにそれをコピーし、そのパスを指定してテスト実行、終わったら削除する。
こうすれば、テストスクリプト側でコントロールできるかと思います。

作成者:  偶然的通行人 [ 2018年7月07日(土) 16:29 ]
記事の件名:  Re: コマンドラインから Firefox をリフレッシュする方法

横から失礼します。

すでにご覧になっておられるかと思いますが、MDN に次のようなページがあります。
(参考)
・コマンドラインオプション - Mozilla | MDN
developer.mozilla.org/ja/docs/Mozilla/Command_Line_Options

ここを見る限りでは、Firefox のリフレッシュに特化したコマンドラインオプションはないようです。
しかし、新しいユーザープロファイルを生成するコマンドラインオプションはあります。(-CreateProfile)

Mattsun さんが書きました:
現在 Firefox をヘッドレスモードで起動し (firefox --headless <URL>),JavaScript コードを実行する実験を行っています.
その過程で,ヘッドレスモードでの起動 → 終了を 5 回ほど繰り返すと,Firefox が正常に動作しなくなるという現象に出会いました.
コマンド実行後のコンソールには,通常通り「*** You are running in headless mode.」と表示されているのですが,ページに埋め込まれている JS コードが実行されない状況です.

上記のページにある
-purgecaches
の項目も参考になさってはいかがでしょうか。


開発者とは無縁なシロウトの話にすぎませんが以上です。的外れな話だったらすみません。


(おことわり)
現在、健康上の制約により不定期な書き込みしかできなくなっています。すぐに応答できない場面がかなり多くなりますことを、ご容赦ください。

作成者:  Mattsun [ 2018年7月08日(日) 14:35 ]
記事の件名:  Re: コマンドラインから Firefox をリフレッシュする方法

お二方とも,ご回答いただきありがとうございました.
最終的に,プロファイルを明示的に指定することで上手く行きました.

EarlgreyTea さんが書きました:
もしプロファイルを初期化すればいいのであれば、--profile <path> でプロファイルのパスを指定してみるのはどうでしょう。
あらかじめ必要な既定値を用意したプロファイルを作っておき、テストごとにそれをコピーし、そのパスを指定してテスト実行、終わったら削除する。
こうすれば、テストスクリプト側でコントロールできるかと思います。
偶然的通行人 さんが書きました:
新しいユーザープロファイルを生成するコマンドラインオプションはあります。(-CreateProfile)

上記のご意見を元に色々と動かしてみたのですが,適当な新規プロファイルを作成して,以降そのプロファイルを明示的に指定し続けることで,問題なく動作するようになりました:

コード:
# 適当な新規プロファイル 'hoge' の作成
$ firefox -headless -CreateProfile hoge

# プロファイル 'hoge' を指定して実行
$ firefox -headless -P hoge <URL>

なぜデフォルトプロファイルでは数回実行すると動作しなくなるのか,理由は不明のままですが,とりあえずこれで実験ができます.
お手数お掛けしました.ありがとうございました.

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/