5

Whiteを使用して、C# WPF UI の BDD テストを自動化しています。

私の最初のいくつかのテストは、私の開発マシン (Windows 7 を実行) でうまく機能しています。ただし、ビルド サーバー (Windows Server 2003 R2 を実行している仮想マシン) で同じコードを実行しようとすると、正しく動作しません。どちらの場合も、テストはコマンド ラインから実行され、テストは Cuke4Nuke フレームワークを使用しています。サーバーの場合、リモート デスクトップ接続経由でサーバーにアクセスしています。

コードは次のようになります。

var application = Application.Launch("whiteApp.exe");
var initializeOption = InitializeOption.NoCache;
var windowCriteria = SearchCriteria.ByText("whiteApp");
var window = application.GetWindow(criteria, initializeOption);
var criteria = SearchCriteria.ByAutomationId("rightButton");
var button = (Button) window.Get(criteria);
button.click();

問題は、ボタン クリック イベントがサーバー上で実行されたときに発生しないことです。White の実行が終了した後も UI を開いたままにしておくと、(マウスを使用して) ボタンをクリックできます。興味深い点の 1 つは、クリック メソッドが実行された後、下の図のようにボタンがクリックされた形跡が表示されることです。他のボタンの場合、マウス オーバー効果が表示されます。

クリック前後のボタン

4

4 に答える 4

6

これがあなたの問題かどうかはわかりませんが、AnyCPUプラットフォームを使用して構築され、64 ビット システムで実行されるアプリケーションで White を使用すると、いくつかの問題があることに気付きました。何らかの理由で、これらの条件下でマウスを移動しようとすると、要求された場所ではなく画面の下部にマウスが自動的に移動します。これは、クリック コマンドが、クリックするように指示されたボタンを見逃すことを意味します。

自動化アプリケーションをアプリケーションとしてビルドするとx86、White はマウスを適切に自動化します。

于 2011-04-13T17:51:02.540 に答える
0

ハリーが彼の答えで述べたように、自動化アプリケーション(テストアプリケーション)をx86モードで強制することは機能します。

しかし、本当の問題はホワイト自身によって引き起こされます。Whiteのcodeplexに関するディスカッションページで、HachimaはWhiteのソースコードの変更を投稿して、x86およびx64で確実に機能するようにしました:http ://white.codeplex.com/discussions/228433

于 2012-07-30T13:39:10.310 に答える
0

これは古い質問であることは知っていますが、先日偶然出くわし、私の答えが他の人に役立つかもしれないと思いました...

64 ビットの Win7 マシンで NUnit を使用して Project White を実行しています。それを機能させるには、テストが 32 ビット プロセスで実行されるようにする必要がありました。

私は TestDriven.Net プラグインを使用していました。Any CPU テストを 32 ビットまたは 64 ビットとして実行するオプションがあります。

于 2011-08-12T16:18:24.027 に答える
0

私のローカルの Windows 7 x64 マシンでも同じことができます。

役に立つかどうかわかりませんが、button.RaiseClickEvent(); を使用します。うまくいくようです。ボタンやsmtをクリックしなくても、これでイベントが発生すると思います。

于 2011-05-10T15:23:08.323 に答える