2

WindowsコンピューターのRuby mineにこれがあります:

require 'watir-webdriver'

Before do
  @browser = Watir::Browser.new :ie
end

他のプログラムが同時に実行されているときに発生するタイムアウトの問題のため、@browser をより高い優先度で実行するように変更する必要があります。タイムアウトの許容時間を増やす方法は知っていますが、いくつかのテストの結果、許容できるよりも長くタイムアウトを設定する必要があることがわかりました。

4

2 に答える 2

1

オブジェクトの奥深くから 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ます。xpropxwininfo

編集kill完全を期すために、必要に応じて watir-webdriver ブラウザーの pid にコマンド を送信するために使用する Unix/Cygwin コマンドを次に示します。

awk '/pid:/ {print $2;}' browserObj.yaml |xargs -rt kill
于 2012-04-28T21:17:46.350 に答える
0

ドキュメントとコードを閲覧したところ、ドライバーが使用する IE のプロセス ID を見つける準備ができていませんでした。システム ツールを使用して、webdriver ポート (デフォルトは 5555) でリッスンしているプロセスを検出し、そのプロセスをナイシングしてみてください。posixでは、特定のポートを使用してプロセスを試しlsofたりnetstat見つけたりすることができますが、Windowsでどのように役立つかわかりません。

もちろん、これがリソースの競合の問題である場合は、watir テストに、必要な速度での実行を妨げるものがない、より適切に制御された環境を提供してみませんか。

于 2012-04-28T00:52:48.007 に答える