問題タブ [microsoft-ui-automation]
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.
delphi - TSemaphor コントロールの色の変化を検出するには?
システムの準備ができているかどうかを示すフレームで囲まれた小さなテキスト ボックスがあるアプリケーション A があります。テキストとフレームは、DelphiTSemaphor
コントロール内にあります。
- 初期化中、フレームは黄色です。
- 初期化が完了し、システムの準備が整うと、フレームが緑色に変わります。
別のアプリケーション B では、アプリケーション A が初期化されて準備が整ったことを検出する必要があります。
アプリケーションAでこれを行うにはどうすればよいですか(フレームの色の変化を検出する)、最小限の労力で、次の制約の下で
- アプリケーション A は変更できません (ソース コードがありません)。
- アプリケーション A には自動化インターフェースがなく、
- アプリケーション A の準備が整ったときに発生する唯一の変化は、色の変化です。
?
私が知っているこの問題を解決するには、次のアプローチがあります。
- 画像認識を使用する (http://sikuli.org/)
- それぞれの位置にあるピクセルの色を見つけます。
- 挿入された DLL を使用して、TSemaphore 属性にアクセスします。
c# - AutomationElement.NativeWindowHandleをIntPtrに変換する方法
コンボボックスをAutomationElement A
表す(MS UIオートメーション)があります。Windows API呼び出しを使用して、そのコンボボックスでn番目の項目を選択したい
A.NativeWindowHandle
コンボボックスのハンドルが含まれていますが、に渡すには、からにComboBox_SetCurSel
変換する必要があります。int
IntPtr
どのように?
delphi - Delphi2009でMSUIオートメーションを使用する方法
のような呼び出しなど、Microsoft UIオートメーション機能を使用するC#アプリケーションがありますAutomationElement.RootElement.FindFirst(...)
。
次に、Delphi 2009で同じことを行う必要があります(MS UIオートメーションを使用)。
どうやって
a)DelphiコードがMS UIオートメーションライブラリを使用していることを宣言し、b)次のような呼び出しを行うAutomationElement.RootElement.FindFirst(...)
?
自分の.NETコードをパッケージ化してDelphiで使用できるようにする方法を説明するチュートリアル(チュートリアル1、チュートリアル2 )がいくつかありますが、私の場合、Delphiで「事前にパッケージ化された」(すでにインストールされている)アセンブリを使用する必要があります。
アップデート1
これで、あるマシンでアクセスできるようになりAutomationElement.RootElemeent
ましたが、別のマシンでは機能しません。
uiAutomation := CoCUIAutomation.Create;
2番目のマシンで実行の試みが失敗する理由をどのように見つけることができますか?
c# - MSIE 9 で特定のタブを取得する
私はWatin 2.1を使用して、Webサイトのファイルダウンロードとファイルオープン機能をテストしようとしています. これは Internet Explorer 8 ではうまく機能しましたが、Internet Explorer 9 以降では、ポップアップ ダイアログ ウィンドウではなく、ビューの下部に黄白色のダウンロード バーが表示されます。
私はこの答えを見つけました: https://stackoverflow.com/a/8532222/246622、私が興味を持っているブラウザタブが一番上にある限り、その問題を解決します。上部に他のタブがある場合、ダウンロード バーが見つかりません。ここでの問題は、ダウンロードが開始される前に、これらのテストがダウンロード バーのあるタブの上に他のタブを開くことです。
では、正しいタブにアクセスするにはどうすればよいですか、Internet Explorer でトップ/表示タブを切り替えるにはどうすればよいですか、同じウィンドウのタブではなく他のウィンドウで他のページを開くにはどうすればよいでしょうか。テスト アプリケーションから他のタブを閉じますか?
関連するコードは次のとおりです。
私はこれを試しました:
次に、タイトルの正規表現を使用して正しいタブを特定することを計画していました。
ただし、これは同じウィンドウの下のタブではなく、下のウィンドウを取得します。
microsoft-ui-automation - IUIAutomation::RemoveAllEventHandlers がハングする
UIAutomation を使用してユーザー インタラクションに関連する重要なイベントの通知を受け取るアプリを C++ で開発しています。AddAutomationEventHandler を呼び出してウィンドウが開いたイベントをリッスンすることでイベント ハンドラーを試しましたが、終了する前に通知を停止してクリーンアップするのに問題があります。ユーザーが Firefox などの特定のアプリケーションを起動した場合、RemoveAutomationEventHandler の呼び出しがハングします。(この場合、RemoveAllEventHandlers の呼び出しもハングします。) イベント ハンドラーを追加または削除するためのすべての呼び出しは、同じ非 UI スレッドのコンテキストで行われることに注意してください。
注: Windows 7 と Windows 8 でこの動作が見られます。
なぜこれが起こっているのか、それを修正する方法についてのアイデアはありますか? 構造変更イベントが他のすべてのイベントと異なる理由は何ですか?
c# - Silverlight で textBox の keyDown イベントで Ctrl キーをシミュレートする
アプリケーションとクロム内でリッチテキストボックスを使用していますが、リッチテキストボックスはSPACEキーをキャプチャしていません
バグであることがわかりましたが、サードパーティの修正プログラムを使用したくありません。
CtrlrichTextbox は+ Space& Shift+Spaceキーを認識できるのでCtrl、richTextbox の keydown イベントでキーをシミュレートすることにしました
しかし、それなしでシミュレートする方法がわかりませんかSendKeys
?UI オートメーションを実行しましたが、キーボード シミュレーションが見つかりません。
助けはありますか?
ui-automation - UIA: コントロール型名から ControlType を取得 (文字列)
Microsoft UI オートメーションの使用。「ウィンドウ」や「ボタン」など、UIA コントロールの種類を表す文字列があります。この文字列に適合する ControlType オブジェクトを取得したいと思います。どうやってするの?すべての UIA コントロール タイプを表すいくつかの列挙が存在しますか? ControlType に ControlType.LookupById(int) メソッドがあることだけがわかりました。しかし、IDと名前の対応を知らなければなりません。もちろん、考えられるすべての UIA コントロール タイプを使用して独自のスイッチを作成することも、リフレクションを使用して ControlType ファクトリのすべてのメンバーを取得することもできます。しかし、私は確かに簡単な方法であるべきです..
c# - UIAutomationは要素の子を取得しません
Inspectツールで特定のAutomationIDを持つ要素に子があることがわかります。
しかし、私がこのようにそれらを取得しようとすると:
aPane
要素は正しく取得されますが、要素theChildren
は空です。何がうまくいかなかったのか?
c# - パターンを実装せずにコントロールを操作する方法は?
UIAutomation
私たちのプロジェクトを介して自動化テストを実装しようとしています。しかし、多くのコントロールは標準ではなく、そのコントロールに対して適切なパターンも実装されていません。この場合、UIAutomation フレームワークを介してコントロールを操作するにはどうすればよいですか?
たとえば、製品のボタンはペインを介して実装され、呼び出されるパターンも実装されていません。ボタンはどのようにクリックすればよいですか?Mouse.Click()
(テスト マシンに VS をインストールするのを避けるために、名前空間で使用したくありませんMicrosoft.VisiualStudio.TestTools.UITesting
) UIAutomation フレームワークまたは .net フレームワークに埋め込まれた何かを使用するだけでそれを行う方法はありますか? 前もって感謝します!(適切なパターンが実装されている場合、以下のコードは機能します。また、新しいユーザーとして、参照用のスクリーンショットを投稿できません。申し訳ありません!)