オブジェクトの奥深くから Web 駆動型ブラウザーの PID を実際に見つけて@browser
(保護されたすべてのプライベート コンポーネントを読み取って)、renice
優先順位を上げるために負の数を指定できることを発見しましsudo
た。
このオブジェクトを保存用に ASCII 形式にエクスポートすることを検討しましたが、これは実際に機能しますが、インポートして戻すことは別の質問の対象でした。これを試してください(コードが新しいWatir::Browser
.
require "yaml"
File.open("browserObj.yaml", 'w').write YAML::dump($browser)
次に、このファイルbrowserObj.yamlをのぞくと、次のようなさまざまな興味深い情報が得られます。
server_url: !ruby/object:URI::HTTP
fragment:
host: 127.0.0.1
opaque:
parser:
password:
path: /hub/
port: 7055
query:
registry:
scheme: http
user:
timeout:
launcher: !ruby/object:Selenium::WebDriver::Firefox::Launcher
binary: !ruby/object:Selenium::WebDriver::Firefox::Binary
process: !ruby/object:ChildProcess::Unix::ForkExecProcess
args:
- ./firefox.sh
- -no-remote
- -foreground
detach: false
duplex: false
environment: {}
exit_code:
io:
pid: 6114
started: true
最後の 2 行目の PID に注目してください。この時点で、コードはこれを簡単に検出して処理できます。
これは、階層プロセスツリーを単純に解析するよりも安全です。pstree -panu $PPID
子ブラウザ プロセスを検索します。
私自身のものでは、私はDISPLAYを使用しているため、実際には気にしません(たとえば、他のFirefoxプロセスではなく適切なFirefoxプロセスを強制終了する必要がある場合)。私のデスクトップ/インタラクティブなユーザーのものはすべて DISPLAY :0 で発生しますが、Watir Webdriver のものは Xvfb または Xephyr によってホストされる DISPLAY :99 でkill
発生しxkill
ます。xprop
xwininfo
編集kill
完全を期すために、必要に応じて watir-webdriver ブラウザーの pid にコマンド
を送信するために使用する Unix/Cygwin コマンドを次に示します。
awk '/pid:/ {print $2;}' browserObj.yaml |xargs -rt kill