1

わかりました、これはトリッキーなものです。Webdriverテストを実行するためにいくつかのWindows7VMでSeleniumGrid2をセットアップしようとしています。プロセス全体を自動化するために、sshを介してVMに接続するantスクリプトを使用して、ノードを開始/停止/再構成します。

すべてがうまく機能し、ノードはハブホストに登録してテストを実行できます。唯一の問題は、テストの実行中にブラウザウィンドウが表示されないことです。プロセスと実行中のテストログを確認できますが、グラフィカルインターフェイスがありません。

一方、Windowsから手動でノードを起動すると、すべてが正常になります。

問題は、cygwinで実行されたプロセスがWindowsディスプレイを起動できないことだと思いますが、その場合、エラーをスローするべきではありませんか?私が考えているもう1つのオプションは、WebdriverがフォールバックとしてHTMLunitを使用しているということですが、テストが続き、CPUとメモリを消費している限り、Firefoxプロセスが表示されるのはなぜですか?

4

2 に答える 2

2

sshを介して、Windows stdin、stdout、およびstderrストリームとのみ交換します。ssh接続は、これらのストリームをトンネリングしているだけです。Windowsデスクトップインターフェイスは表示されません、デスクトップオブジェクトはWindowsマシンに存在し、プログラム(ここではブラウザ)がそれに接続されており、すべてのGUIインタラクションがそこにあります。

  1. GUIがユーザーの操作を必要としない場合、すべてがそのように問題ありません。ダイアログボックスが作成され、プログラムが実行されます。終了すると、ダイアログボックスはアプリケーションによって破棄され、アプリケーションが閉じます。私たちのアプリケーションのGUIに関して何も妨げていません。

  2. プログラムで、作成されているが非表示のダイアログボックスでユーザーアクションが必要な場合、プログラムはそこで対話が進むのを待ちます。タスクマネージャにプロセスが表示され、待機しているだけです。ダイアログボックスが作成され、仮想的に「表示」されるWindowsデスクトップにアクセスできないため、プログラムがハングしているように見えます。

典型的なケース2は、ユーザーが何かをするのを待っているプログラム、たとえばメモ帳をリモートで実行する場合です。メモ帳を起動すると、メモ帳が生成され、テキストを入力するか閉じるのを待ちます。

Seleniumテストでは、ケース1になります。GUIを機能させるために必要なすべてのブラウザーの対話は、実際には、ナビゲーションクリックとプログラム終了を行うSeleniumサーバーによって実行されます。彼らのGUIは、実際にはテストWebサーバーを閲覧することで機能していますが、表示されません。

デスクトップデスクトップの作成に関するMicrosoftのWebサイトからのいくつかのさらなる読み物。

于 2012-05-07T14:34:44.893 に答える
0

テストを表示して有効なスクリーンショットを取得する場合は、ユーザーをログインさせ、それらのテストをそのユーザーとして実行する必要があります。すべてがその単一のデスクトップセッションを介して実行される必要があるため、RDPを使用してマシンにリモート接続することはできません。すでに確立されているセッションに接続するため、最善の策はVNCを使用することです。

于 2012-05-13T14:51:49.590 に答える