WATIRを使用してブラウザを制御していますが、スタックしたものすべてを完全にロードしないページがあります。60秒のタイムアウト後、WATIRでエラーが発生し、コマンドを書き続けることができますが、作成した関数でWATIRを使用してブラウザーを閉じようとすると、すべてがスタックします。
ブラウザを手動で閉じると、すべてがうまくいくように見えるので、chromeプロセスID、PIDを見つけて、rubyを使用してプロセスを強制終了するオプションを探しています。
これが私が見つけたコードサンプルです:
irb
require "watir-webdriver"
proxy = "78.159.102.86:49295"
browser = Watir::Browser.new :chrome, :switches => ['--proxy-server=' + proxy]
bridge = browser.instance_variable_get(:@bridge)
launcher = bridge.instance_variable_get(:@launcher)
binary = launcher.instance_variable_get(:@binary)
process = binary.instance_variable_get(:@process)
process.pid
このすべてのメソッドは私にNILを与えます。最後のもの-NoMethodError:nil:NilClassの未定義のメソッド `pid'
私の研究から、私はPIDを取得する必要があると思います。その後、プロセスを閉じることができます。
任意のヒント?私は窓を使っています!これまでのところ、Rubyで名前でプロセスを強制終了するためのメソッドは作成されていないようです。
編集:
私はWindowsのコマンドラインから何が機能するかを見つけました:
taskkill /im Firefox.exe /f /t >nul 2>&1
しかし、私はルビーを使用しているので、エラーが発生します。
SyntaxError:(irb):1:不明な正規表現オプション-f(irb):1:構文エラー、予期しないtINTEGER、keyword_doまたは'{'または'(' taskkill / im Firefox.exe / f / t> nul 2>&1が必要です
ルビーからcmdコマンドを実行する方法は?