6

私はPowerBuilderに精通していませんが、PB用の自動UIテストアプリケーションを作成するタスクがあります。pywinautoおよびiaccesibleライブラリを使用してPythonで実行することにしました。問題は、新しく追加されたリストレコードなどの一部のUI要素にアクセスできないことです(inspect32でも取得できません)。この要素に到達し、それらをテスト可能にする方法について何かアイデアはありますか?

4

4 に答える 4

2

PowerBuilder ベースの GUI を自動化するツールのコードも試しています。私の知る限り、PowerBuilder Native Interface (PBNI) を使用して、NVO 内から PowerScript コードを呼び出すのが最善の策です。

よろしければ、お気軽にメールをお送りください (メール アドレスはプロフィールをご覧ください)。これを行う方法についてアイデアを交換したいと思います。

于 2009-11-16T09:50:18.127 に答える
1

DataWindows(クラスはpbdwxxx、たとえばpbdw110)をテストしている場合は、特定の座標をクリックすることとTabキーを送信することを組み合わせて使用​​し、目的のコントロールにアクセスする必要があります。もちろん、上下の矢印キーを送信して行間を移動することもできます。最も簡単な方法は、SLEのような通常のコントロールから始めて、データウィンドウにタブで移動することです。問題は、データウィンドウが本質的に単なる画像であるということです。クリックまたはタブでフォーカスを移動するまで、特定のフィールドを制御することはできません。また、データウィンドウのiAccessibleインターフェイスが少し奇妙であることがわかりました。データウィンドウにフォーカスのあるオブジェクトを要求すると、正しい答えが得られません。すべての子供たちを列挙すると、焦点が合っている子供たちを見つけることができます。ソースを変更できる場合は、データウィンドウコントロールにAccessibleNameを設定することもお勧めします。そうしないと、位置以外のコントロールを識別できない可能性があります(データウィンドウコントロールとは、データウィンドウ自体ではなく、データウィンドウ内のコントロールを意味します)。 。MDIアプリケーションの場合は、MicroHelpウィンドウ(クラスfnhelpxxx、たとえばfnhelp110、メインアプリケーションウィンドウから検索)を見つけて、現在のコンテキストを判断するのに役立つ場合もあります。

追加のために編集: SikuliはPowerBuilderのテストに非常に有望に見えます。これは、保存されたスクリーンショットのフラグメントから画面上のオブジェクトを認識することによって機能します。つまり、画面の中で見つけたい部分のスクリーンショットを撮ります。

于 2009-11-16T15:50:16.043 に答える
1

私はしばらく PowerBuilder を使用していませんでしたが、あなたが解決しようとしている問題は、Wonderware Intouch のような SCADA システムでプロジェクトを作成している人々のために対処しようとしている問題と似ていると思います。

このようなアプリケーションの問題は、コントロールの値を取得または設定するための API がないことです。したがって、pywinauto アプローチは機能しません。

ユーザーイベントをシミュレートし、スクリーンキャプチャから結果を取得するための小さなツールを作成しました。画面キャプチャの分析に PIL と pytesser ORM を使用しています。最も簡単な方法ではありませんが、問題なく動作します。

このツールはオープンソースで無料で、私のウェブサイトからダウンロードできます(フランス語で申し訳ありません)。アカウントが必要ですが、それも無料です。ただ聞いてください。

フランス語が読める場合は、Intouch ベースのアプリケーションのテストに関する記事を 1 つ紹介します。

自己宣伝で申し訳ありませんが、解決策がない同様の問題に直面していたので、自分で書きました。とにかく、それは無料でオープンソースです...

于 2009-11-16T10:27:41.360 に答える
1

AutomatedQa サポートで、msaa を使用してコントロールにいくつかのプロパティを設定することを推奨するレシピを見たことがあります。それが機能するかどうかはわかりません。

于 2010-02-24T17:25:37.753 に答える