6

Mercury Quick Test Professional 9.2がインストールされた仮想マシン(VMware)があります。Infragisticsライブラリを使用してVB.NETで記述された、アプリケーションをテストするためのスクリプトがあります。

ラップトップを使用して(リモートデスクトップを使用して)この仮想マシンにアクセスすると、すべてが正常に機能し、スクリプトは問題なく完了します。私のラップトップは、WindowsクラシックをテーマにしたXPを実行しています。

別のマシンを使用して(リモートデスクトップを使用して)この仮想マシンにアクセスすると、スクリプトは正常に開始されますが、途中で停止し、QTPからのエラーメッセージは表示されません。このマシンは、WindowsクラシックをテーマにしたXPを実行します。

2つのセットアップの違いの1つは、画面のサイズです。ラップトップは1920x1280で、他のマシンは1280x1024です。

スクリプトが停止する手順には、UltraWinGrid内のチェックボックスのチェックが含まれます。チェックボックス自体が表示され、どちらの場合も画面に表示されます。

誰かが以前にこの問題を抱えたことはありますか、または2台のマシン間で動作が異なる理由を知っていますか?

ありがとう。

4

5 に答える 5

5

わかった。問題が見つかりました。実際、スクリプトを書いた人がそうするように指示したため、スクリプトは黙って失敗していました。画面外のものを検証できなかったため、スクリプトは失敗しました。

問題は、「オフスクリーン」の QTP 定義でした。ラップトップには、ラップトップ自体の画面 (1920x1200) と別の画面 (1280x1024) の 2 つの画面が接続されています。リモート デスクトップを使用して QTP の VM に接続すると、ラップトップの画面の設定が使用されます。これは、QTP スクリプトを起動して別の画面に移動すると、収まらないため、画面が最大化されなくなり、オブジェクトが部分的に画面から外れて見つからないことを意味します。

修正は簡単です。リモート デスクトップで [ディスプレイ] タブを使用し、画面のサイズを 1280x1024 に設定すると、QTP に問題がなくなります。

ほら。

于 2008-10-15T14:29:38.193 に答える
1

エキスパート モードを使用していない場合、および/または QTP がほとんどの作業を実行してリポジトリ オブジェクトを作成できるようにしている場合は、すべてをピクセル単位で参照しています。

私はすべてのリポジトリ オブジェクトを手動で作成し、ソースを表示し (自動化された Web アプリケーション テストの場合)、必要に応じてオブジェクト スパイを使用します。オブジェクト定義の一部としてポジショニング情報を持たないようにしています。

Windows と対話する Web アプリの部分 (アップロードするファイルを開くなど) では、オブジェクト スパイは、リポジトリ オブジェクトを作成するための一意の識別子を作成するために必要な試行錯誤に不可欠でした。しかし、それは可能です。

例 1: File Browse Dialog
text = "Choose file"
nativeclass = #32770 (明らかに、ファイルを開くダイアログに Windows VooDoo が使われているようです?)

例 2 : 参照ダイアログのファイル名テキスト ボックス:
nativeclass = "Edit"
添付テキスト "File &name:" (さらに Windows VooDoo? "&" なしでは機能しません)

例 3: ダイアログでボタンを開く:
text = "&Open"
object class = "Button"

幸運を!

于 2008-09-18T21:44:02.320 に答える
1

明確化のポイント: QTP がエラー メッセージなしで停止するとおっしゃいました。これは、テスト結果のログ ファイルにもエラー メッセージがないということですか? ログに何らかの情報があれば、問題の診断に役立つ可能性があります。スクリプトが失敗するポイントのコード行を共有していただけますか?

また、リモート デスクトップは、リモート マシンのデスクトップのサイズを変更します。QTP スクリプトは本質的に座標ベースではありませんが、個々のステートメントはオブジェクトに対する座標ベースにすることができます。その点で、解像度は問題になる可能性があります。たとえば、高解像度のマシンで記録された Button.Click(5, 150) のような行があるとします。ただし、解像度の低いマシンで再生しようとした場合、150 が解像度の低いオブジェクトの範囲外になると、問題が発生する可能性があります。

于 2008-09-25T18:44:14.163 に答える
0

いくつかのこと:

VMで簡単にデバッグできるはずです。VMが停止するのを待って、オブジェクトリポジトリに移動し、VMがオブジェクトを識別できるかどうかを確認してください。いいえの場合は、オブジェクトスパイを使用して、OS間でどのプロパティが異なるかを把握します。違いがある場合は、いつでもそのプロパティを正規表現に設定して、両方の可能性をチェックすることができます。

それが問題ではないと仮定すると、リモートウィンドウが閉じているか最小化されている場合、QTPでリモートデスクトップを使用する際に問題が発生します。私たちにとっては、RDPウィンドウが表示されていないときにクリップボードを変更できないという問題でしたが、QTPをそのように使用すると他の驚きが生じる可能性があります。

于 2008-09-24T18:15:58.000 に答える
0

QTP は最後の手段として以外は画面座標を使用しませ。オブジェクトが高レベル オブジェクト (SwfTableこの場合) として識別される場合は問題ありませんが、QTP がフォールバック先のオブジェクトWinObjectと画面座標を認識しない場合は問題ありません。

Infragistics を使用している場合は、Infragistics がTestAdvantage製品で QTP のサポートを拡張していることを知っておく必要があります。これにより、問題が解決される可能性があります。


編集: @ MatthieuFは言った:

実際、QTP に Infragistics プラグインを使用していますが、まだ問題があります。

失敗する回線の例を教えてください。

于 2008-09-24T06:47:03.680 に答える