1

現在のシナリオは、元のアプリケーションの単なるダミーです。textboxes私は 2 、 1 ErrorProvider、および aのフォームを持っていbutton Validateます。テキストボックスが空の状態で Validate をクリックすると、テキストボックスの前にinput 1 missinginput 2 missingそれぞれのエラープロバイダが表示されます。以下はフォームです

ここに画像の説明を入力

現在、自動化チームは errorProvider ツールチップを検出しようとしています。彼らはQTPを使用しています。このテスト側の最小限の知識で、私は分析を開始しました。QTPで試したのは

SwfEdit("textbox1").GetErrorProviderText()しかし役に立たない。私は常に空のテキストを取得しています。

次に、Whiteフレームワークを使用して物事を達成することにしました。errorProvider コントロールを取得できますが、各テキスト ボックスのエラー メッセージを取得する方法がわかりません。これは私が今まで書いたコードです

AutomationElement rootElement = AutomationElement.RootElement;
var winCollection = rootElement.FindAll(TreeScope.Children, Condition.TrueCondition);

var automationElement = (from AutomationElement n in winCollection where n.Current.Name == "Error Provider Test" select n).FirstOrDefault();

if (automationElement != null)
{
    Condition propCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "errorProviderInput", PropertyConditionFlags.IgnoreCase);
}

さらに進む方法がわかりません。正しい道を進んでいるかどうかもわかりません。これを達成するための新しいアイデア、提案、またはガイダンスを喜んで聞きます。ありがとう。

4

1 に答える 1

0

最後に問題の解決策を見つけました。

私の分析では、QTP が .Net Framework 4.0 以降のコントロールを読み取る際に問題があることに気付きました。

推奨される解決策:

  1. 通常、QTP のインストール後に .Net Framework がマシンにインストールされている場合、QTP は .Net Framework 4.0 バージョンの検出に失敗します。ゼロからのクリーン インストールが問題の解決に役立つ場合があります。QTP と .Net Framework の両方をアンインストールしてから、最初に .Net Framework をインストールしてから QTP をインストールします)。

  2. この問題を手動で解決するには、2 つの dll を手動で登録する必要があります。Mercury.QTP.Agent.dll と Mercury.QTP.WpfAgent.dll です。以下の手順に従って、dll を登録します。

    • 64 ビット OS を使用している場合は、QTP_00709 パッチをインストールします。
    • 管理者モードでコマンド プロンプトを開きます。
    • Mercury.QTP.Agent.dll と Mercury.QTP.WpfAgent.dll が配置されている場所に移動します。
    • タイプ

..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.Agent.dll

..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.WpfAgent.dll

それが役に立てば幸い。

于 2013-07-22T09:07:40.600 に答える