UI-Automatisierung mit Weißen Problem zu finden, childs
Aus irgendeinem Grund, ich bin immer ein run-time Fehler von Weiß.Core, wenn versuchen zu finden ein Fenster Kind von seinen Eltern.
FEHLER angezeigt:
White.Core.Mappings.ControlDictionaryException: Could not find TestControl for ControlType=window and FrameworkId:Win32
at White.Core.Mappings.ControlDictionary.GetTestControlType(ControlType controlType, String frameWorkId, Boolean isNativeControl)
at White.Core.Mappings.ControlDictionary.GetTestType(String className, ControlType controlType, String frameworkId, String name, Boolean isNativeControl)
at White.Core.Mappings.ControlDictionary.GetTestType(AutomationElement automationElement)
at White.Core.Factory.DictionaryMappedItemFactory.Create(AutomationElement automationElement, ActionListener actionListener)
at White.Core.Factory.DictionaryMappedItemFactory.Create(AutomationElement automationElement, ActionListener actionListener, Type customItemType)
at White.Core.Factory.PrimaryUIItemFactory.Create(SearchCriteria searchCriteria, ActionListener actionListener)
at White.Core.UIItems.Container.NonCachedContainerItemFactory.Find(SearchCriteria searchCriteria)
at White.Core.UIItems.Container.ContainerItemFactory.Get(SearchCriteria searchCriteria, ActionListener uiItemActionListener)
at White.Core.Sessions.NullWindowSession.Get(ContainerItemFactory containerItemFactory, SearchCriteria searchCriteria, ActionListener actionListener)
at White.Core.UIItems.Container.CurrentContainerItemFactory.Find(SearchCriteria searchCriteria, WindowSession windowSession)
at White.Core.UIItems.UIItemContainer.Get(SearchCriteria searchCriteria)
--- End of inner exception stack trace ---
at White.Core.UIItems.UIItemContainer.Get(SearchCriteria searchCriteria)
at ICOWrapper.Form1.wasUserLoggedIn(String id1, String id2)
at ICOWrapper.Form1.button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Die aktuelle Struktur, die ich versuche zu navigieren, ist die folgende:
Hauptfenster->Systemsteuerung->Fenster
und ich bin mit der folgenden Methode in C#
public Boolean wasUserLoggedIn(string id1, string id2)
{
Thread.Sleep(500);
var mdiClient = window.MdiChild(SearchCriteria.ByControlType(ControlType.Pane).AndAutomationId(id1));
Thread.Sleep(500);
var selectPatient = (Window)mdiClient.Get(SearchCriteria.ByControlType(ControlType.Window).AndAutomationId(id2));
Thread.Sleep(500);
return selectPatient != null? true: false;
}
und rufen Sie die Methode wie folgt:
Boolean wasFound = wasUserLoggedIn("40960", "40961");
UIspy-Objekte verwendet, für die Identifizierung ControlType und AutomationID:
AutomationId: 40960
ControlType: ControlType.Pane
Name:
HelpText:
Bounding rectangle: 8,78,900,581
ClassName: MDIClient
IsOffScreen: False
FrameworkId: Win32
ProcessId: 5964
AutomationId: 40961
ControlType: ControlType.Window
Name: Home
HelpText:
Bounding rectangle: 8,59,900,600
ClassName: ClaWin01000000H_2
IsOffScreen: False
FrameworkId: Win32
ProcessId: 5964
InformationsquelleAutor Chale CS | 2013-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich empfehlen ein Upgrade auf
TestStack.White
anstatt der alten Weißen Bibliothek.Das problem ist, dass Sie nicht verwenden sollte
.Get()
zu beheben windows. Für MDI-Anwendungen, die Sie verwenden solltenMdiChild()
ist, wenn es einmodal
Fenster, verwenden Sie.ModalWindow()
auf dieparent
Fenster oder gehen Sie zurück, um die Anwendung dann verwendenWindow()
um die Fenster.Hoffe, das hilft
InformationsquelleAutor Jake Ginnivan
Ist die
Pane
ein Nachkomme desWindow
AutomationElement
? DieWindow
Sie versuchen zu finden, vielleicht nicht im Fokus.InformationsquelleAutor Tal Bronfer