最近、コード化された UI テストを使用して Windows アプリケーションの自動化を開始しましたが、MSAA コントロールの一部にアクセスしているときに問題に直面しています。自動化を手作業でコーディングしていますが、コントロールを UI マップに追加してから使用したくありません。
私が立ち往生したコントロールは、マシンを選択する左側のペインの treeItem であり、中央の残りのクライアント領域に詳細が表示されます。
UI コントロールに十字線で示されているプロパティを使用してコントロールを検索しようとしましたが、無駄でした。
以下は私が試したコードです -
UITestControl machine = new UITestControl(App);
machine.TechnologyName = "MSAA";
machine.SearchProperties.Add(WinTreeItem.PropertyNames.ControlType, "TreeItem");
machine.SearchProperties.Add(WinTreeItem.PropertyNames.Name, "Machine1");
machine.SearchProperties.Add(WinTreeItem.PropertyNames.ControlName, "m_tvPlantStructureView");
Mouse.Click(machine); // This code gives an error
エラー-
Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: 再生で、指定された検索プロパティを持つコントロールが見つかりませんでした。追加の詳細: TechnologyName: 'MSAA' ControlType: 'TreeItem' Name: 'Machine1' ControlName: 'm_tvPlantStructureView' ---> System.Runtime.InteropServices.COMException: COM コンポーネントの呼び出しからエラー HRESULT E_FAIL が返されました。
添付ファイルを参照してください。何が問題で、将来認識されないようなコントロールのエラーを完全に回避するためには、どのようなプロセスに従うべきか教えてください.
現在、私はクロスヘアを実行してプロパティを取得し、コントロールのそのプロパティをコーディングして、ユーザーのアクションとアサーションを自動化する方法に従っています。しかし、この方法は常に機能するとは限りません。
それを行うより良い方法があれば教えてください。