QTP で Web リスト ボックスの選択に問題があり、それを解決する方法を知り尽くしました。誰かが助けてくれることを願っています。
コンテナーには 5 つのコントロール (2 つの webedit コントロールと 3 つの weblist コントロール) があります。一緒に、顧客に関連付けられたアカウントのエントリを許可し、任意の顧客に対して 16 のアカウントが存在する可能性があります。アカウントの情報の編集または入力に関係なく、常にアクティブなコントロールは 5 つだけです。アカウントの情報が入力されて受け入れられると、読み取り専用の表の行に変わり、次のアカウントの入力のために新しいコントロールのセットがその下に表示されます。
これらのコントロールに入力される情報は、口座番号、種類、説明、指定、およびステータスです。ステータス値は指定に依存し、リスト内の項目は、ユーザーが指定に対して指定した内容に応じて動的に変化します。指定が指定されるまで、ステータス リストは有効になりません。
タイミングを試行錯誤した結果、最初のアカウントのステータス リストが明らかに有効になっているにもかかわらず、QTP によって無効と見なされるという問題を回避することができました。その後、2 番目のアカウントのエントリに進むことができました。
2 番目のアカウントの指定を変更し、ステータス リストで適切な項目 (データ テーブルで指定) を選択しようとします。データ テーブルからの仕様が見つかりません。これは言い回しの違いの問題であり、おそらくそれを予測して今すぐ対処する必要があると考えたので、リストと最大 2 つの検索項目の 3 つのパラメーターを受け入れる関数を作成しました。私の関数は、渡されたリストボックスを検索し、受け取った検索項目の一致 (完全または部分的) を探します。ここで重大な問題に遭遇しました。
私の関数が受け取ったコントロールのリストは、そのアカウントの指定に対応するテストの前回の反復からのものでした。これが、私の関数が選択項目を見つけられなかった理由です。画面上のリストには適切な項目が表示されますが、これは私が間違ったオブジェクトを見ていることを示唆しています。また、select ステートメントを使用してデータ テーブルの値を直接リストに入れると、「オブジェクトが無効になっています」というメッセージが表示されます。
アクティブなコントロールは、以前に入力したアカウントの読み取り専用表示の下に表示されます。私は QTP を初めて使用しますが、ドキュメントも読みます。この時点での私の唯一の理論は、ATP が正しいリストを私の機能に渡していないということです... おそらく、それがどのように学習されたかには、毎回変わる位置が含まれていたのでしょう. ただし、スパイは、スクリーン コントロールが、前のアカウントで処理したものと同じであると識別したため、私の理論は疑わしいものになりました。さらに、動的に変化しない他の 4 つのコントロールでは、同じ問題は発生しません。情報を一貫して入れることができます。
この質問が長くなってしまったことをお詫びしますが、できる限り徹底的かつ明確にしたかったのです。この障害を乗り越えるのを手伝ってくれる人はいますか。