問題タブ [automationelement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
silverlight - System.Windows.Automation を介して Chrome 内の Silverlight ウィンドウにアクセスする
これはおそらく無駄ですが、誰かがこれを行った経験があるかどうか疑問に思っています。
System.Windows.Automation (例: AutomationElement )を使用して、Google Chrome内でホストされているSilverlightアプリケーションにアクセスしようとしています。
私が抱えている問題は、Chrome が子プロセス内で Silverlight アプリをホストしていることです。(メイン プロセスの hWnd を使用して) "Silverlight Control" AutomationElementを見つけようとすると、失敗します。
Silverlight ホストの子プロセスを見つけても、ウィンドウ ハンドルがなく、子プロセスのハンドルを使用してコントロールを見つけようとすると失敗します。
私はそれがそこにあることを知っています...私はそれをInspectを使って見ることができます
しかし、これを見つけるには、Silverlight アプリをクリックして Inspect を上に移動する必要があります。AutomationElement.FindFirst または Inspect を使用してタブ ウィンドウから下に移動できません。
IE や Firefox では見られない、ウィンドウと Silverlight プラグインの間に切断があるようで、それを回避する方法がわかりません。
他の誰かがこれを行うことができましたか?
c# - オートメーション要素の書き込み
デスクトップアプリケーションをテストするためのテストに取り組んでいます。マイクロソフトの API から自動化要素を使用しています。テキストボックスに書きたい。自動化要素で取得したテキストボックスに書き込むにはどうすればよいですか?
アプリケーションをナビゲートするテストを作成しようとしていますが、そこにあるテキストボックスに書き込みたいです。
テキストボックスの自動化要素は既に持っていますが、書き方がわかりません。
私はそれを行うことができますか?そして、ボタンをクリックするのはどうですか?
ありがとう
c# - C# で AutomationElement を適切に操作する方法
Windows フォームで形成された Windows アプリケーションをテストしたいと考えています。ライブラリ AutomationElements を使用することにしました。
問題は、それを適切に使用する方法がわからないことです。
例: AutomationElement で処理しているテキスト ボックスにどのように書き込むことができますか?
コードは次のようになります。
loginUser に User を書きたいと思います。どうすればいいですか?
本当にありがとう!
c# - UIAutomation AutomationElement 強制更新 .current およびすべての子孫
最上位のオートメーション要素オブジェクト (デスクトップ要素) とそのすべての子孫のツリー構造を更新したいと考えています。
私が遭遇した問題は、私がテストしている特定のプログラムがその GDI オブジェクトを奇妙な方法で破棄して再構築することであり、ツリー構造を再構築する原因になることがわかっている自動化の特定のセクションがあります。私は明示的に .cache を使用していませんが、自動化要素の値にアクセスするために .current を使用しています。uispy で GDI 構造の変更を模倣できます。uispy で「更新」を押しても、新しいオブジェクトを取得するのに十分ではありません。uispy を閉じて再度起動すると、これが修正されます。プログラム内でuispyを閉じて再度開く動作を模倣して、再構築が必要なデータ構造を強制的に再構築したいと思います。
現在、「新しい」子を参照しなくなった自動化要素、またはとりわけ境界矩形に 0,0,0,0 を持つ自動化要素になってしまいます。
また、uispy の「refresh」コマンドがプログラムで何をするのか正確に教えてもらえますか?
.net - ダイアログを含む?
Visual Studio 2010 のウィンドウ フォームを使用して、特定のウィンドウ (タイトルに基づく) に開いているダイアログ ボックスがあるかどうかを判断しようとしています (UISpy の機能と同様)。
Windows オートメーション ライブラリと AutomationElement クラスの使用を検討しましたが、タスクを達成する方法を正確に特定できないようです。
c# - "" (空の文字列) の名前値を持つ UIAutomation は、実行時の変更を反映しません
私がいくつかのテストを自動化しているアプリケーションの 1 つは、テキスト フィールド (UIA_TextControlTypeId(0xC364)) を初期化することであり、開発者はその内容と対応する名前を空白の "" として初期化するように設定しています。
実行時に、このテキスト フィールドをいくつかの文で更新しますが、inspect.exe または自分の AutomationElement オブジェクトでこの更新を確認できません。AutomationElement.Current.Name またはそのバリアント以外に「getText」する方法はありますか? AutomaitonElement で使用できる唯一のパターンは「IsLegacyIAccessiblePatternAvailable」であり、このパターンでさえ変更されない空白の Name および Help 属性を維持します。
UIAutomation の範囲内で、オブジェクトに表示されている現在の文字列を要求することはできませんか? これをアクセス可能にする別のコントロール パターンの追加を開発者に要求する必要がありますか? もしそうなら、どれですか?
理想的には、AutomationID が定義されているようなものを除いて、自動化が開発および設計プロセスに与える影響は最小限であるべきだと思います。この哲学自体に欠陥がありますか?
c# - AutomationElementを介してDateTimePicker要素を設定します
DateTimePicker
を介して要素を特定の時間に設定できるようにしたいAutomationElement
。時刻を「hh:mm:sstt」(つまり、午後10時45分56秒)として保存します。
私はそのような要素を取得します:
ValuePattern p = AECollection[index].GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
私には2つの選択肢があると思います。
p.SetValue("9:41:22 AM");
また
p.Current.Value = "9:41:22 AM";
ただし、最初のオプションは単純に機能しません(.NET 2.0でこれが壊れている可能性があることをどこかで読みましたが、.NET 3.0を使用しています)。2番目のオプションは、要素が読み取り専用であることを示していますが、読み取り専用にならないようにステータスを変更するにはどうすればよいですか?またはもっと簡単に、どうすれば時間を変更できますか:(?
ui-automation - AutomationElement.FromHandle() の実行時間が断続的に遅くなる
私は UI テストの自動化に取り組んでおり、通常は AutomationElement.FromHandle は非常に高速ですが、AutomationElement を返すのに 30 秒かかることがあります。私の限られたログ記録から、AutomationElement を取得するのに 100 ミリ秒未満または完全な 30 秒かかります。他の誰かがこの種の問題を見たことがありますか?
この問題の再現性についてはあまり調査していないことを認めます。そのため、テスト対象のアプリケーションのコントロール クラスに潜在的なパフォーマンスの問題があるかどうかはわかりません。
wpf - FindFirst は常に null AutomationElement を返します
UI Automated フレームワークでいくつかのカスタム コントロールをテストしようとしています。私のコントロールの 1 つは TextBox の基本クラスを持ち、もう 1 つは Control を継承しています。テストで最初のコントロールを見つけることができますが、TreeScope とプロパティ条件をどのように組み合わせても、ウィンドウ内で 2 番目のカスタム コントロールを見つけることができません。
次のように、XAML でカスタム コントロールを宣言します。
以下のようなサンプルテストがあります。
2 番目のアサーションは常に null を返すため、テストの実行を開始することさえできません。この問題を解決するために私ができることについて何か提案はありますか?
c#-4.0 - AutomationElement は行セルの値を見つけることができません (ただし、UISpy は見つけます)
3 つのリスト (SysListView32) を持つウィンドウからデータを取得しようとしています。UISpy と Inspect の両方で 3 つの行とセルが表示されますが、コードではそのうちの 2 つが完全に機能します (Caption="List2" と Caption="List3")。 3 番目には、白い空の文字列のみが含まれます。
私が試してみると:
lineaは空の文字列になり、gridPrizes は 17 行、3 列、すべてのセルが空の文字列になります。
私が試してみると:
私は0です。なぜですか?
UISpy を使用すると、すべてが検出されることに注意することが重要です。また、Automation でマネージド バージョンとアンマネージド バージョンの両方を試しましたが、まったく同じ結果が得られました。
Windows Server 2008 R2 を使用しています。
スクリーンショットは次のとおりです。
前もって感謝します