Mercury Quick Test Pro および仮想マシン:あるクライアント マシンでは動作するが、別のクライアント マシンでは動作しない

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

質問

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

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

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

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

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

以前にこの問題に遭遇した人はいますか、または 2 つのマシン間で動作が異なる理由を知っている人はいますか?

ありがとう。

役に立ちましたか?

解決

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

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

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

ほら。

他のヒント

エキスパート モードを使用していない場合、またはリポジトリ オブジェクトを作成する作業のほとんどを QTP に許可している場合は、はい、ピクセルですべてを参照しています。

私はすべてのリポジトリ オブジェクトを手動で作成し、ソースを表示し (自動 Web アプリケーション テストの場合)、必要に応じて Object Spy を使用して支援します。私はオブジェクト定義の一部として位置情報を持たないようにしています。これはまさにあなたが直面している理由と同じです。

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

例1:ファイル参照ダイアログ
text = "ファイルを選択"
ネイティブクラス = #32770 (ファイルを開くダイアログの Windows VooDoo のようですか?)

例2:参照ダイアログのファイル名テキストボックス:
ネイティブクラス = "編集"
添付テキスト「ファイル名(&name):」(Windows VooDoo の詳細?「&」がないと機能しません)

例3:ダイアログ内の「開く」ボタン:
テキスト = "開く(&O)"
オブジェクトクラス = "ボタン"

幸運を!

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

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

QTP は行います ない オブジェクトが高レベルのオブジェクト (SwfTable この場合) 問題はありませんが、QTP がフォールバック先のオブジェクトを認識しない場合は、 WinObject そして画面座標。

Infragistics を使用している場合は、Infragistics が QTP のサポートを拡張していることを知っておく必要があります。 テストアドバンテージ おそらくあなたの問題を解決してくれる製品です。


編集: @マチューF 言った:

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

失敗する行の例を教えていただけますか?

いくつかのこと:

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top