2

私が調べた限りでは、QTP の Ext に関する答えはありません。sdk on stackoverflow (およびネット上の他のほとんどの場所; それに適切なタグすらありません...) であるため、質問することで問題が解決される可能性は低いことは承知していますが、試してみる価値はあります。

とにかく、Ext. sdk さん、QTP が実行時に生成するエラー ログ ファイルの場所を特定する方法を教えていただけると助かります。そのようなファイルが新しい UFT 11.5 バージョンに存在することは知っていますが、QTP 10 または 11 では見つけることができませんでした (記録として、QTP のログ追跡機能については触れませんが、 QTP 自体によって生成されるエラー/例外)。

ここで質問です。ネイティブ レコードをサポートし、アプリケーションでテストを実行するための QTP の拡張機能を開発しています。現在、オブジェクト リポジトリをインポートし、開発した COM オブジェクト テスト エージェントを使用してテスト ステップを作成できます。IRecordable インターフェイスを実装しようとしたときに問題が発生しました。qtp から IRecorder オブジェクトを取得しており、それを ISuppressor オブジェクトとして使用して、冗長なステップが記録されないようにすることもできますが、ステップを記録しようとするすべての試み (つまり、新しい記録されたオブジェクトをリポジトリに追加し、テストへのステップ) 単に失敗しました。

これは私が使用しているコードです:

public class MyTestingAgent :
    AutInterface.ITestable, 
    AutInterface.IRecordable
{
    QTPInterface.IRecorder recorder;
    ...

    public void AutInterface.IRecordable.BeginRecording(object recorder)
    {
        IRecordSuppressor recordSuppressor = recorder as IRecordSuppressor;
        recordSuppressor.Suppress(MyTestingAgentId, 
            "<Suppress><Item type=\"HWND\" value=\"[@HWND]\" /></Suppress>".Replace("[@HWND]", getMyAppHWND().ToString()));

        this.recorder = recorder as QTPInterface.IRecorder;
        ...
    }

    public void recordNewObjStep(string parentName, string objName, string method, Object[] arguments) 
    {
        object[] objectHyrarchy = new object[] { findObjectId(objName), findObjectId(parentName) };
        string externalParent = null;
        string appDescriptionXml = getDescriptionXml(parentName, objName);
        try
        {
            recorder.Record(MyTestingAgentId, objectHyrarchy , appDescriptionXml, externalParent, method, arguments);
            Trace.TraceInformation("Record successfully done.");
        }
        catch (Exception e)
        {
            Trace.TraceError("TEAAgent.recordSTElement: " + e.ToString());
        }
    }
    ...
}

Record() の呼び出しで送信するすべての引数が正確であると確信しています。getDescriptionXml() と findObjectId() は、コード内のさまざまなケースで使用され、正常に動作します。メソッド名と引数は正しいです。

厄介なのは、Record の呼び出しで例外がスローされず、「Record successfully done.」というメッセージが表示されることです。トレース ログで。言うまでもなく、リポジトリに新しいオブジェクトは作成されず、テストにステップは追加されません。

私は QTP をデバッグすることができないので、私が間違っていることをほとんど知りません。そのため、QTP のログ ファイルの検索、またはこの問題に光を当てる可能性のあるその他のアプローチについて、私は助けを求めています。

4

1 に答える 1

2

QTP 11 の場合、QTP の bin ディレクトリに移動してClientLogs.exeを実行することにより、ログをオンにすることができます。

特に TEA の拡張性については、次の手順を実行します。

  1. 左側のリストからQTPノードを選択します
  2. Available CategoriesリストからLogCatPackTEAを見つけます。
  3. ボタンをクリックし>て、選択したカテゴリに移動します
  4. カテゴリを選択してレベルを変更し、TEA レベルをDebug2に変更します。
  5. OKQTPをクリックして実行

ログは、パスで指定されたディレクトリにQTP.logとして表示されます。

あなたが直面している問題が何であるかに興味があります。原因が見つかったら更新してください。

スクリーンショット

于 2013-05-02T08:46:03.457 に答える