/ SetValue de / ValuePattern ne fonctionne pas pour le contrôle du navigateur Chrome comme la modification d'adresse (exception levée) - google-chrome, microsoft-ui-automation

SetValue de ValuePattern ne fonctionne pas pour le contrôle du navigateur Chrome, comme la modification d'adresse (Exception levée) - Google-Chrome, Microsoft-ui-automation

J'essaie d'utiliser UIA pour contrôler les navigateurs (c'est-à-direchrome, firefox) telles que nativer, revenir en arrière, aller de l’avant, etc. pour des tests nécessaires. J'ai essayé d'écrire du code de démonstration, mais j'ai rencontré quelques problèmes. J'ai reçu AutomationElement pour l'adresse modifiée pour Chrome et j'essaie de définir son URL avec ValuePattern, mais j'ai l'exception ci-dessous:

在 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:Usersdarrendocumentsvisual studio 2010ProjectsBrowserControlBrowserControlBrowserBrowser.cs:行号 109
在 BrowserControl.Program.Main(String[] args) 位置 C:Usersdarrendocumentsvisual studio 2010ProjectsBrowserControlBrowserControlProgram.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()

Et j'ai trouvé que la méthode SetFoucus aura aussila même exception. J'ai essayé d'utiliser la méthode win32 pour envoyer un message, constaté que l'élément.Current.NativeWindowHandle est null. mais je peux voir la valeur actuelle de la propriété actuelle de ValuePattern. Juste pour une adresse où l’UIA ne peut pas trouver le contrôle de chrome "jusqu’à ce que j’appelle la méthode ci-dessous () UiaRegisterProviderCallback (IntPtr.Zero);

Donc, je ne sais pas quelle est la raison de cela, et est-il possible de définir une valeur pour le contrôle de chrome

Réponses:

0 pour la réponse № 1

Je ne peux pas en être certain sans creusersource de Chrome, mais j’imagine que la barre d’adresse de Chrome est en fait un contrôle personnalisé et c’est la raison pour laquelle vous ne la voyez pas se conformer parfaitement au ValuePattern comme une zone de texte / zone de saisie standard. J'ai "vu des choses comme celle-ci apparaître ailleurs, et je finis généralement par faire une sorte de solution de contournement en utilisant SendKeys.