0

私はUIAを使用して、必要なテストのために、nativate、goback、goforwardなどのブラウザー(つまり、chrome、firefox)の操作を制御しようとしています。デモコードを書いてみましたが、問題が発生しました。Chromeのアドレス編集用のAutomationElementを入手し、ValuePatternを使用してURLを設定しようとしましたが、以下の例外が発生しました。

在 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
在 MS.Internal.Automation.UiaCoreApi.CheckError(Int32 hr)
在 System.Windows.Automation.ValuePattern.SetValue(String value)
在 BrowserControl.Browser.Browser.Goto(String url) 位置 C:\Users\darren\documents\visual studio 2010\Projects\BrowserControl\BrowserControl\Browser\Browser.cs:行号 109
在 BrowserControl.Program.Main(String[] args) 位置 C:\Users\darren\documents\visual studio 2010\Projects\BrowserControl\BrowserControl\Program.cs:行号 17
在 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()

また、SetFoucusメソッドでも同じ例外が発生することがわかりました。win32メソッドを使用してメッセージを送信しようとしましたが、element.Current.NativeWindowHandleがnullであることがわかりました。しかし、ValuePatternの現在のプロパティから現在の値を確認できます。以下のメソッド()UiaRegisterProviderCallback(IntPtr.Zero);を呼び出すまで、UIAが最初にChromeのコントロールを見つけることができないアドレスの場合。

だから、それの理由はわかりません、そしてとにかくクロムの制御の値を設定することはありますか

4

1 に答える 1

0

Chrome のソースを掘り下げずにこれを確認することはできませんが、Chrome のアドレス バーは実際にはカスタム コントロールであり、標準の textbox/エディットボックス。このようなポップアップが他の場所で発生するのを見たことがありますが、通常はSendKeysを使用して何らかの回避策を講じることになります。

于 2012-07-30T02:23:39.223 に答える