public ComboBoxDropDown (IRawElementProviderSimple provider) : base (provider) { this.provider = provider as IRawElementProviderFragmentRoot; if (this.provider == null) throw new ArgumentException ("Provider should be IRawElementProviderFragmentRoot"); expandCollapseProvider = (IExpandCollapseProvider)provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id); }
public Window (IRawElementProviderSimple provider) : base (provider) { if (provider != null) Role = Atk.Role.Frame; balloonWindow = (bool)(provider.GetPropertyValue (AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null); rootProvider = (IRawElementProviderFragmentRoot) provider; if (rootProvider != null && balloonWindow) { Role = Atk.Role.Alert; Name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.HelpTextProperty.Id); } transformProvider = (ITransformProvider) provider.GetPatternProvider (TransformPatternIdentifiers.Pattern.Id); windowProvider = (IWindowProvider) provider.GetPatternProvider (WindowPatternIdentifiers.Pattern.Id); }
public void GetDataGridAndFirstListItem(out IRawElementProviderFragmentRoot dataGrid, out IRawElementProviderFragment firstChild) { IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)calendarProvider; // The datagrid is the MonthCalendar's first child dataGrid = (IRawElementProviderFragmentRoot) rootProvider.Navigate(NavigateDirection.FirstChild); IRawElementProviderFragmentRoot child = (IRawElementProviderFragmentRoot)dataGrid.Navigate( NavigateDirection.FirstChild); // Header is next, but skip that firstChild = (IRawElementProviderFragment)child.Navigate( NavigateDirection.NextSibling); }
public Window(IRawElementProviderSimple provider) : base(provider) { if (provider != null) { Role = Atk.Role.Frame; } balloonWindow = (bool)(provider.GetPropertyValue(AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null); rootProvider = (IRawElementProviderFragmentRoot)provider; if (rootProvider != null && balloonWindow) { Role = Atk.Role.Alert; Name = (string)provider.GetPropertyValue(AutomationElementIdentifiers.HelpTextProperty.Id); } transformProvider = (ITransformProvider)provider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id); windowProvider = (IWindowProvider)provider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id); }
public void GetRuntimeIdTest() { using (Form f = new Form()) { IRawElementProviderFragmentRoot provider = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f); int[] runtimeId = provider.GetRuntimeId(); Assert.IsNotNull(runtimeId, "Runtime ID is null"); Assert.AreEqual(2, runtimeId.Length, "Runtime ID list is not the right size"); Assert.AreEqual(AutomationInteropProvider.AppendRuntimeId, runtimeId[0], "First item in runtime ID is not the AppendRuntimeId"); int automation_id = (int)provider.GetPropertyValue( AutomationElementIdentifiers.AutomationIdProperty.Id); Assert.AreEqual(automation_id, runtimeId[1], "Second item in runtime ID is not the same as the control's AutomationId property"); } }
public void GetPatternProviderTest() { using (Form f = new Form()) { IRawElementProviderFragmentRoot provider = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f); object window = provider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id); Assert.IsNotNull(window); Assert.IsTrue(window is IWindowProvider, "IWindowProvider"); object transform = provider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id); Assert.IsNotNull(transform); Assert.IsTrue(transform is ITransformProvider, "ITransformProvider"); } }
public void IScrollProviderHorizontalScrollPercentTest() { PrintPreviewControl printPreviewControl = new PrintPreviewControl(); printPreviewControl.Size = new System.Drawing.Size(100, 100); printPreviewControl.Document = new System.Drawing.Printing.PrintDocument(); printPreviewControl.Zoom = 0.1; IRawElementProviderFragmentRoot provider = (IRawElementProviderFragmentRoot)GetProviderFromControl(printPreviewControl); // IRawElementProviderSimple provider = // ProviderFactory.GetProvider (printPreviewControl); IScrollProvider scrollProvider = (IScrollProvider) provider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id); Assert.IsNotNull(scrollProvider, "Not returning ScrollPatternIdentifiers."); }
public void SplitterPanelITransformProviderRotateTest() { SplitContainer splitContainer = new SplitContainer(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(splitContainer); IRawElementProviderFragment childProvider = rootProvider.Navigate(NavigateDirection.FirstChild); ITransformProvider transformProvider = (ITransformProvider) childProvider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id); Assert.IsNotNull(transformProvider, "Not returning TransformPatternIdentifiers."); try { double degrees = 50; transformProvider.Rotate(degrees); Assert.Fail("InvalidOperationException not thrown"); } catch (InvalidOperationException) { } }
public void StatusBarPanelIGridItemProviderContainingGridTest() { StatusBar statusBar = new StatusBar(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar); statusBar.Panels.Add("Panel"); IRawElementProviderFragment childProvider = rootProvider.Navigate(NavigateDirection.FirstChild); IGridItemProvider gridItemProvider = (IGridItemProvider) childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id); Assert.IsNotNull(gridItemProvider, "Not returning GridItemPatternIdentifiers."); IRawElementProviderSimple parentProvider = (IRawElementProviderSimple) childProvider.Navigate(NavigateDirection.Parent); IRawElementProviderSimple itemProvider = gridItemProvider.ContainingGrid; Assert.AreSame(parentProvider, itemProvider, "ContainingGrid value"); }
public void SetFocusTest() { using (Form f1 = new Form()) { using (Form f2 = new Form()) { IRawElementProviderFragmentRoot p1 = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f1); IRawElementProviderFragmentRoot p2 = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f2); f1.Show(); f2.Show(); p1.SetFocus(); Assert.IsTrue(f1.Focused, "Form #1 is not focused after SetFocus ()"); Assert.IsFalse(f2.Focused, "Form #2 is focused after Form #2 SetFocus ()"); p2.SetFocus(); Assert.IsFalse(f1.Focused, "Form #1 is focused after Form #2 SetFocus ()"); Assert.IsTrue(f2.Focused, "Form #2 is not focused after SetFocus ()"); } } }
public void PatternsTest() { ListBox listbox = (ListBox)GetControlInstance(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(listbox); Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id), "Selection Pattern IS supported"); //Lets add a lot of items to show scrollbar for (int i = 0; i < 30; i++) { listbox.Items.Add(string.Format("dummy {0}", i)); } Assert.IsNotNull(rootProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id), "Scroll Pattern IS supported"); listbox.Items.Clear(); Assert.IsNull(rootProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id), "Scroll Pattern IS NOT supported"); }
public void StatusBarPanelIGridItemProviderColumnTest() { StatusBar statusBar = new StatusBar(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar); StatusBarPanel panel = new StatusBarPanel(); panel.Text = "Panel"; statusBar.Panels.Add(panel); IRawElementProviderFragment childProvider = rootProvider.Navigate(NavigateDirection.FirstChild); IGridItemProvider gridItemProvider = (IGridItemProvider) childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id); Assert.IsNotNull(gridItemProvider, "Not returning GridItemPatternIdentifiers."); int value = statusBar.Panels.IndexOf(panel); Assert.AreEqual(value, gridItemProvider.Column, "Column value"); }
public List(IRawElementProviderFragmentRoot provider) : base(provider) { this.provider = provider; selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id); if (selectionProvider == null) { throw new ArgumentException("List should always implement ISelectionProvider"); } int controlTypeId = (int)Provider.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id); if (controlTypeId == ControlType.Spinner.Id) { Role = Atk.Role.SpinButton; } else { Role = Atk.Role.List; } selectionHelper = new SelectionProviderUserHelper(provider, selectionProvider); }
public void IGridProviderGetItemTest() { StatusStrip statusStrip = new StatusStrip(); IRawElementProviderFragmentRoot provider = (IRawElementProviderFragmentRoot)GetProviderFromControl(statusStrip); IGridProvider gridProvider = (IGridProvider) provider.GetPatternProvider(GridPatternIdentifiers.Pattern.Id); Assert.IsNotNull(gridProvider, "Not returning GridPatternIdentifiers."); int rowValue = 0; int columnValue = 0; statusStrip.Items.Add("Item"); IRawElementProviderSimple panelProvider = (IRawElementProviderSimple) provider.Navigate(NavigateDirection.FirstChild); IRawElementProviderSimple itemProvider = gridProvider.GetItem(rowValue, columnValue); Assert.AreSame(panelProvider, itemProvider, "GetItem method"); try { rowValue = gridProvider.RowCount; columnValue = gridProvider.ColumnCount; itemProvider = gridProvider.GetItem(rowValue, columnValue); Assert.Fail("ArgumentOutOfRangeException not thrown."); } catch (ArgumentOutOfRangeException) { } try { rowValue = -1; columnValue = -1; itemProvider = gridProvider.GetItem(rowValue, columnValue); Assert.Fail("ArgumentOutOfRangeException not thrown."); } catch (ArgumentOutOfRangeException) { } }
public void StatusBarPanelProviderPatternTest() { StatusBar statusBar = new StatusBar(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar); statusBar.Panels.Add("Panel"); IRawElementProviderFragment childProvider = rootProvider.Navigate(NavigateDirection.FirstChild); object valueProvider = childProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id); Assert.IsNull(valueProvider, "Should not return ValuePatternIdentifiers."); object gridItemProvider = childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id); Assert.IsNotNull(gridItemProvider, "Not returning GridItemPatternIdentifiers."); Assert.IsTrue(gridItemProvider is IGridItemProvider, "Not returning GridItemPatternIdentifiers."); }
public void CollectionTest() { ComboBox combobox = GetComboBox(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(combobox); IRawElementProviderFragment list = rootProvider.Navigate(NavigateDirection.FirstChild); while (list != null) { if ((int)list.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.List.Id) { break; } list = list.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(list, "We must have a List"); IRawElementProviderFragment item0 = list.Navigate(NavigateDirection.FirstChild); Assert.IsNull(item0, "We shouldn't have children in List"); //Add item 0. (Items.Add) bridge.ResetEventLists(); combobox.Items.Add("Item 0"); StructureChangedEventTuple tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded); Assert.IsNotNull(tuple, "We should have tuple"); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Added item.FragmentRoot != list"); item0 = list.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(item0, "We should have children in List"); //Add item 1. (Items.Add) bridge.ResetEventLists(); combobox.Items.Add("Item 1"); tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded); Assert.IsNotNull(tuple, "We should have tuple"); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Added item.FragmentRoot != list"); IRawElementProviderFragment item1 = item0.Navigate(NavigateDirection.NextSibling); Assert.IsNotNull(item1, "We should have children in List"); Assert.AreEqual(item1.Navigate(NavigateDirection.PreviousSibling), item0, "Navigation invalid: item1 -> item0"); Assert.AreEqual(item0.Navigate(NavigateDirection.NextSibling), item1, "Navigation invalid: item1 <- item0"); //Remove item 0 (Items.RemoveAt) bridge.ResetEventLists(); combobox.Items.RemoveAt(0); tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildRemoved); Assert.IsNotNull(tuple, "We should have tuple."); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Removed item.FragmentRoot != list"); Assert.IsNotNull(list.Navigate(NavigateDirection.FirstChild), "We should STILL have children in List"); Assert.AreEqual(list.Navigate(NavigateDirection.FirstChild), item1, "Navigation invalid: parent.FirstChild != item1"); //Add item 2 y 3 (Items.AddRange) bridge.ResetEventLists(); combobox.Items.AddRange(new object [] { "Item 2", "Item 3" }); Assert.AreEqual(2, bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded), "We should have two events"); StructureChangedEventTuple tuple0 = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); Assert.IsNotNull(tuple0, "We should have tuple0."); StructureChangedEventTuple tuple1 = bridge.GetStructureChangedEventAt(1, StructureChangeType.ChildAdded); Assert.IsNotNull(tuple1, "We should have tuple1."); Assert.AreEqual(((IRawElementProviderFragment)tuple0.provider).FragmentRoot, list, "Added item2.FragmentRoot != list"); Assert.AreEqual(((IRawElementProviderFragment)tuple1.provider).FragmentRoot, list, "Added item3.FragmentRoot != list"); IRawElementProviderFragment item2 = item1.Navigate(NavigateDirection.NextSibling); Assert.IsNotNull(item2, "We should have children in List"); IRawElementProviderFragment item3 = item2.Navigate(NavigateDirection.NextSibling); Assert.AreEqual(item3.Navigate(NavigateDirection.PreviousSibling), item2, "Navigation invalid: item2 -> item3"); Assert.AreEqual(item2.Navigate(NavigateDirection.NextSibling), item3, "Navigation invalid: item2 <- item3"); // We have: "Item1", "Item2" "Item3". Lets replace "Item2" with "Item4" bridge.ResetEventLists(); combobox.Items [1] = "Item4"; Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildRemoved), "We should have 1 event"); Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded), "We should have 1 event"); StructureChangedEventTuple tupleReplacedRemoved = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildRemoved); Assert.IsNotNull(tupleReplacedRemoved, "Replaced: Removed tupple shouldn't be null"); Assert.AreEqual(tupleReplacedRemoved.provider, item2, "Removed item should be Item2"); StructureChangedEventTuple tupleReplacedAdded = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); Assert.IsNotNull(tupleReplacedAdded, "Replaced: Added tupple shouldn't be null"); Assert.AreEqual(tupleReplacedAdded.provider, //Notice that elements ARE NOT SORTED item3.Navigate(NavigateDirection.NextSibling), "Navigation failed: item3 -> item4"); Assert.AreEqual(((IRawElementProviderFragment)tupleReplacedAdded.provider).Navigate(NavigateDirection.PreviousSibling), item3, "Navigation failed: item3 <- item4"); TestChildPatterns(rootProvider); // Lets clear all! bridge.ResetEventLists(); combobox.Items.Clear(); Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildrenBulkRemoved), "We should have 1 event"); Assert.IsNull(list.Navigate(NavigateDirection.FirstChild), "We shouldn't have children in List"); }
public void IScrollProviderTest() { TextBox textBox; IRawElementProviderSimple provider; GetProviderAndControl(out provider, out textBox); textBox.Size = new System.Drawing.Size(30, 30); Form.Controls.Add(textBox); textBox.ScrollBars = ScrollBars.Both; IRawElementProviderFragmentRoot root_prov = (IRawElementProviderFragmentRoot)provider; // Case #1: Edit with no text textBox.Text = String.Empty; textBox.Multiline = false; IScrollProvider scroll = provider.GetPatternProvider( ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider; Assert.IsNull(scroll, "Edit mode with no text incorrectly supports ScrollProvider"); // Case #2: Edit with large amount of text textBox.Text = TEST_MESSAGE; textBox.Multiline = false; scroll = provider.GetPatternProvider( ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider; Assert.IsNull(scroll, "Edit mode with text incorrectly supports ScrollProvider"); // Case #3: Document with no text textBox.Text = String.Empty; textBox.Multiline = true; scroll = provider.GetPatternProvider( ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider; Assert.IsNull(scroll, "Document mode with no text incorrectly supports ScrollProvider"); // Case #4: Document with large amount of text textBox.Text = TEST_MESSAGE; textBox.Multiline = true; scroll = provider.GetPatternProvider( ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider; Assert.IsNotNull(scroll, "Document mode with text doesn't support ScrollProvider"); // Test that an event is fired when we scroll vertically bridge.ResetEventLists(); scroll.Scroll(ScrollAmount.NoAmount, ScrollAmount.LargeIncrement); Assert.AreEqual(1, bridge.AutomationEvents.Count, "EventCount after scrolling vertically"); // We can't scroll horizontally, so verify that no event is fired bridge.ResetEventLists(); scroll.Scroll(ScrollAmount.LargeIncrement, ScrollAmount.NoAmount); Assert.AreEqual(0, bridge.AutomationEvents.Count, "EventCount after scrolling horizontally"); IRawElementProviderFragment child; child = root_prov.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(child, "textBox has no children"); TestProperty(child, AutomationElementIdentifiers.ControlTypeProperty, ControlType.ScrollBar.Id); child = child.Navigate(NavigateDirection.NextSibling); Assert.IsNull(child, "textBox has more than one scrollbar"); }
public CustomProviderBase(IRawElementProviderFragmentRoot root) { this.Root = root; }
public void PatternsTest() { ListBox listbox = new ListBox(); for (int i = 0; i < 15; i++) { listbox.Items.Add(i); } IRawElementProviderFragmentRoot listboxProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(listbox); IRawElementProviderFragment scrollBarProvider = null; IRawElementProviderFragment child = listboxProvider.Navigate(NavigateDirection.FirstChild); while (child != null) { if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.ScrollBar.Id) { scrollBarProvider = child; break; } child = child.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(scrollBarProvider, "Should be scrollbar"); //LAMESPEC: This SHOULD BE Assert.IsFalse Assert.IsTrue((bool)child.GetPropertyValue(AutomationElementIdentifiers.IsRangeValuePatternAvailableProperty.Id), "Should support RangeValue Pattern"); //Lets test buttons! IRawElementProviderFragment buttonProvider = scrollBarProvider.Navigate(NavigateDirection.FirstChild); while (buttonProvider != null) { if ((int)buttonProvider.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.Button.Id) { break; } buttonProvider = buttonProvider.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(buttonProvider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id), "Invoke Pattern IS supported"); //Testing all other patterns Assert.IsNull(scrollBarProvider.GetPatternProvider(DockPatternIdentifiers.Pattern.Id), "Dock NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id), "ExpandCollapse NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(GridPatternIdentifiers.Pattern.Id), "Grid NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id), "GridItem NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id), "Invoke NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(MultipleViewPatternIdentifiers.Pattern.Id), "MultipleView NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id), "Scroll NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(ScrollItemPatternIdentifiers.Pattern.Id), "ScrollItem NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id), "Selection NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id), "SelectionItem NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(TablePatternIdentifiers.Pattern.Id), "Table NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(TableItemPatternIdentifiers.Pattern.Id), "TableItem NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(TogglePatternIdentifiers.Pattern.Id), "Toggle NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id), "Transform NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id), "Value NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id), "Window NOT supported"); Assert.IsNull(scrollBarProvider.GetPatternProvider(TextPatternIdentifiers.Pattern.Id), "Text NOT supported"); }
private int ChildrenCount (IRawElementProviderFragmentRoot rootProvider) { int children = 0; IRawElementProviderFragment child = rootProvider.Navigate (NavigateDirection.FirstChild); while (child != null) { children++; child = child.Navigate (NavigateDirection.NextSibling); } return children; }
private IRawElementProviderFragmentRoot ColumnCellTest(SWF.DataGridViewColumn column, SWF.DataGridViewCell cell, bool cellChildrenExpected, SWF.DataGridViewCell newCell) { SWF.DataGridView datagridview = GetControlInstance() as SWF.DataGridView; datagridview.Size = new Size(200, 200); datagridview.AllowUserToAddRows = false; datagridview.Columns.Add(column); IRawElementProviderFragmentRoot provider = GetProviderFromControl(datagridview) as IRawElementProviderFragmentRoot; Assert.IsNotNull(provider, "Missing DataGridView provider"); IRawElementProviderFragmentRoot header = null; IRawElementProviderFragment child = provider.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(child, "FirstChild is null"); int childCount = 0; while (child != null) { childCount++; if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.Header.Id) { header = child as IRawElementProviderFragmentRoot; } child = child.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(header, "Header is missing"); Assert.AreEqual(1, childCount, "Children (Header)"); // Exposes BNC #478840 TestChildPatterns(header); SWF.DataGridViewRow row = new SWF.DataGridViewRow(); row.Cells.Add(cell); datagridview.Rows.Add(row); IRawElementProviderFragment dataItem = null; childCount = 0; child = provider.Navigate(NavigateDirection.FirstChild); while (child != null) { childCount++; if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.DataItem.Id) { dataItem = child; } child = child.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(dataItem, "DataItem is missing"); Assert.AreEqual(2, childCount, "Children (Header/DataItem)"); IRawElementProviderFragment buttonChild = dataItem.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(buttonChild, "DataItem.Child missing"); TestPatterns(buttonChild); Assert.AreEqual(dataItem, buttonChild.Navigate(NavigateDirection.Parent), "DataItem != ButtonChild.Parent"); IGridItemProvider gridItemProvider = (IGridItemProvider)buttonChild.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id); Assert.IsNotNull(gridItemProvider, "Child should support IGridItemProvider"); Assert.IsNotNull(gridItemProvider.ContainingGrid, "ContainingGrid should not be null"); // http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.igriditemprovider.containinggrid.aspx Assert.IsNotNull(gridItemProvider.ContainingGrid.GetPatternProvider(GridPatternIdentifiers.Pattern.Id), "ContainingGrid must implement GridPatternProvider"); childCount = 0; child = buttonChild.Navigate(NavigateDirection.FirstChild); while (child != null) { childCount++; child = child.Navigate(NavigateDirection.NextSibling); } if (!cellChildrenExpected) { Assert.AreEqual(0, childCount, "No children expected."); } else { Assert.Greater(childCount, 0, "Children expected."); } TestChildPatterns(provider); if (newCell != null) { // Lets add a new row, to make sure everything is ok. SWF.DataGridViewRow newRow = new SWF.DataGridViewRow(); newRow.Cells.Add(newCell); datagridview.Rows.Add(newRow); TestChildPatterns(provider); } // Exposes BNC #513476 cell.ReadOnly = false; Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id)); cell.ReadOnly = true; Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id)); cell.ReadOnly = false; datagridview.Enabled = false; Assert.IsFalse((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id)); datagridview.Enabled = true; Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id)); return(provider); }
public void StatusBarPanelNamePropertyChangedEventTest() { StatusBar statusBar = new StatusBar(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar); string panelName = "original panel name"; StatusBarPanel panel = new StatusBarPanel(); panel.Text = panelName; statusBar.Panels.Add(panel); IRawElementProviderFragment childProvider = rootProvider.Navigate(NavigateDirection.FirstChild); TestProperty(childProvider, AutomationElementIdentifiers.NameProperty, panelName); bridge.ResetEventLists(); string newPanelName = "new panel name"; panel.Text = newPanelName; TestProperty(childProvider, AutomationElementIdentifiers.NameProperty, newPanelName); Assert.AreEqual(1, bridge.AutomationPropertyChangedEvents.Count, "Name property change event expected"); AutomationPropertyChangedEventTuple eventTuple = bridge.AutomationPropertyChangedEvents [0]; Assert.AreEqual(childProvider, eventTuple.element, "event sender"); Assert.AreEqual(AutomationElementIdentifiers.NameProperty, eventTuple.e.Property, "event property"); Assert.AreEqual(newPanelName, eventTuple.e.NewValue, "event new value"); Assert.AreEqual(panelName, eventTuple.e.OldValue, "event old value"); Assert.AreEqual(1, bridge.AutomationEvents.Count, "TextPattern text change event expected"); AutomationEventTuple eventTuple2 = bridge.AutomationEvents [0]; Assert.AreEqual(childProvider, eventTuple2.provider, "event sender"); Assert.AreEqual(TextPatternIdentifiers.TextChangedEvent, eventTuple2.eventId, "event id"); Assert.AreEqual(TextPatternIdentifiers.TextChangedEvent, eventTuple2.e.EventId, "event id"); }
public CustomProviderFragment (IRawElementProviderFragmentRoot root) : base (root) { ClickCount = 0; }
public CustomProviderBase (IRawElementProviderFragmentRoot root) { this.Root = root; }
private void TestFocusInDataItemChildren (ListView listview, int index, IRawElementProviderFragmentRoot dataItemRoot, bool focused) { AutomationPropertyChangedEventTuple tuple = bridge.GetAutomationPropertyEventFrom (dataItemRoot, AutomationElementIdentifiers.HasKeyboardFocusProperty.Id); Assert.AreEqual (focused, (bool) tuple.e.NewValue, "DataItem Focused value."); IRawElementProviderFragment child = dataItemRoot.Navigate (NavigateDirection.FirstChild); Assert.IsNotNull (child, "Child should not be null"); int subItem = 0; while (child != null) { bool hasfocus = (bool) child.GetPropertyValue (AutomationElementIdentifiers.HasKeyboardFocusProperty.Id); if ((int) child.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.Edit.Id) { string name = (string) child.GetPropertyValue (AutomationElementIdentifiers.NameProperty.Id); if (!focused) Assert.IsFalse (hasfocus, string.Format ("{0}.{1} Name: '{0}'", index, subItem, name)); else { if (listview.FullRowSelect || GetIndexFromName (listview.Items [index], name) == 0) Assert.AreEqual (focused, hasfocus, string.Format ("{0}.{1} Name: '{0}'", index, subItem, name)); else Assert.AreNotEqual (focused, hasfocus, string.Format ("{0}.{1} Name: '{0}'", index, subItem, name)); } subItem++; } else // CheckBox is focused when fullrowSelected and is focused // is expected Assert.AreEqual (listview.FullRowSelect && focused, hasfocus, string.Format ("{0}.CheckBox Focus should NOT be set", index)); child = child.Navigate (NavigateDirection.NextSibling); } }
public void Bug468271Test () { // NOTE: This test only exposes bug in Provider side. // ListView_details: "table cell" isn't accessible without "focused" ListView listview = new ListView (); listview.View = View.Details; listview.CheckBoxes = true; listview.GridLines = true; listview.Sorting = SortOrder.Ascending; listview.Dock = DockStyle.Top; listview.Width = 350; listview.Height = 260; listview.Columns.Add ("Column1", 200, HorizontalAlignment.Left); listview.Columns.Add ("Column2", 200, HorizontalAlignment.Left); listview.Columns.Add ("Column3", 200, HorizontalAlignment.Left); for (int index = 0; index < 3; index++) { ListViewItem item = new ListViewItem (string.Format ("Item:{0}", index)); item.SubItems.Add (index.ToString ()); item.SubItems.Add ((index+10).ToString ()); listview.Items.Add (item); } // We have the following table: // "Column1" | "Column2" | "Column3" // ------------------|-----------|---------- // checkbox, "Item0" | "0" | "10" // checkbox, "Item1" | "1" | "11" // checkbox, "Item2" | "2" | "12" // ListViewUIATree: // - Header // - HeaderItem "Column1" // - HeaderItem "Column2" // - HeaderItem "Column3" // - DataItem "Item0" // - CheckBox // - "Item0" // - "0" // - "10" // - DataItem "Item1" // - CheckBox // - "Item1" // - "1" // - "11" // - DataItem "Item2" // - CheckBox // - "Item2" // - "2" // - "12" IRawElementProviderFragmentRoot root = (IRawElementProviderFragmentRoot) GetProviderFromControl (listview); Assert.IsNotNull (root, "Missing ListViewProvider"); IRawElementProviderFragmentRoot []dataItems = new IRawElementProviderFragmentRoot [3]; IRawElementProviderFragment child = root.Navigate (NavigateDirection.FirstChild); Assert.IsNotNull (child, "Missing child"); int dataItem = 0; while (child != null) { if ((int) child.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.DataItem.Id) { dataItems [dataItem] = (IRawElementProviderFragmentRoot) child; dataItem++; } child = child.Navigate (NavigateDirection.NextSibling); } Assert.AreEqual (dataItems.Length, dataItem, "Count != DataItems"); // You *can* only focus 1 item, so, focusing a different item // will unfocus previous item and focus new item. // listview.FullRowSelect = false: first subitem will is selected. bridge.ResetEventLists (); listview.Focus (); listview.Items [0].Focused = true; TestFocusInDataItemChildren (listview, 0, dataItems [0], true); bridge.ResetEventLists (); listview.Items [1].Focused = true; TestFocusInDataItemChildren (listview, 1, dataItems [1], true); TestFocusInDataItemChildren (listview, 0, dataItems [0], false); bridge.ResetEventLists (); listview.Items [2].Focused = true; TestFocusInDataItemChildren (listview, 2, dataItems [2], true); TestFocusInDataItemChildren (listview, 1, dataItems [1], false); }
public void NavigationTest() { IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)calendarProvider; IRawElementProviderSimple child = rootProvider.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(child, "MonthCalendar has no children"); TestProperty(child, AutomationElementIdentifiers.ControlTypeProperty, ControlType.DataGrid.Id); TestProperty(child, AutomationElementIdentifiers.LocalizedControlTypeProperty, "data grid"); IRawElementProviderSimple header = ((IRawElementProviderFragmentRoot)child).Navigate( NavigateDirection.FirstChild); Assert.IsNotNull(header, "MonthCalendarDataGrid has no children"); TestProperty(header, AutomationElementIdentifiers.ControlTypeProperty, ControlType.Header.Id); TestProperty(header, AutomationElementIdentifiers.LocalizedControlTypeProperty, "header"); int numChildren = 0; IRawElementProviderSimple headerItem = ((IRawElementProviderFragmentRoot)header).Navigate( NavigateDirection.FirstChild); while (headerItem != null) { TestHeaderItem(headerItem, header, numChildren); numChildren++; headerItem = ((IRawElementProviderFragment)headerItem) .Navigate(NavigateDirection.NextSibling); } Assert.AreEqual(daysInWeek, numChildren, "Not returning the correct number of days in a week"); int numItems = 0; int numButtons = 0; IRawElementProviderFragmentRoot dataGridProvider; IRawElementProviderFragment childItem; GetDataGridAndFirstListItem(out dataGridProvider, out childItem); List <IRawElementProviderSimple> buttons = new List <IRawElementProviderSimple> (); do { int controlType = (int)childItem.GetPropertyValue( AutomationElementIdentifiers.ControlTypeProperty.Id); if (controlType == ControlType.ListItem.Id) { numItems++; } else if (controlType == ControlType.Button.Id) { numButtons++; buttons.Add(childItem); } childItem = childItem.Navigate(NavigateDirection.NextSibling); } while (childItem != null); SelectionRange range = calendar.GetDisplayRange(false); Assert.AreEqual((range.End - range.Start).Days + 1, numItems, "Don't have the correct number of list items"); Assert.AreEqual(2, numButtons, "Don't have the correct number of buttons"); IRawElementProviderSimple backButton = buttons[0]; IInvokeProvider invokeProvider = backButton.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id) as IInvokeProvider; Assert.IsNotNull(invokeProvider, "Button doesn't implement IInvoke"); calendar.SelectionStart = new DateTime(2000, 1, 1); invokeProvider.Invoke(); Assert.AreEqual(new DateTime(1999, 12, 1), calendar.SelectionStart, "Calendar date is incorrect after going backward"); }
protected BaseFragmentProvider(IRawElementProviderFragment parent, IRawElementProviderFragmentRoot fragmentRoot) { this.parent = parent; this.fragmentRoot = fragmentRoot; }
public void ComboBoxTest() { SWF.DataGridViewComboBoxColumn column = new SWF.DataGridViewComboBoxColumn(); column.HeaderText = "CheckBox Column"; column.Items.AddRange("1", "2", "3", "4", "5"); SWF.DataGridViewComboBoxCell cell = new SWF.DataGridViewComboBoxCell(); SWF.DataGridViewComboBoxCell newCell = new SWF.DataGridViewComboBoxCell(); IRawElementProviderFragmentRoot provider = ColumnCellTest(column, cell, true, newCell); // Lets test navigation. IRawElementProviderFragment child = provider.Navigate(NavigateDirection.FirstChild); while (child != null) { if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.DataItem.Id) { break; } child = child.Navigate(NavigateDirection.NextSibling); } // Lets search our ComboBox child = child.Navigate(NavigateDirection.FirstChild); while (child != null) { if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.ComboBox.Id) { break; } child = child.Navigate(NavigateDirection.NextSibling); } // ComboBox should have 2 children. Button and ListBox int children = 0; IRawElementProviderFragmentRoot comboboxProvider = child as IRawElementProviderFragmentRoot; child = child.Navigate(NavigateDirection.FirstChild); while (child != null) { children++; child = child.Navigate(NavigateDirection.NextSibling); } Assert.AreEqual(2, children, "ComboBox.Children"); // Exposes #493520 // cell should be the first combobox cell.Value = "1"; ISelectionProvider selectionProvider = (ISelectionProvider)comboboxProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id); Assert.IsNotNull(selectionProvider, "Selection Provider missing"); IRawElementProviderSimple [] selection = selectionProvider.GetSelection(); Assert.IsNotNull(selection, "Selection is null"); foreach (IRawElementProviderSimple selected in selection) { Assert.IsNotNull(selected, "Selected is null"); } cell.Value = null; selection = selectionProvider.GetSelection(); Assert.IsNotNull(selection, "Selection is null"); foreach (IRawElementProviderSimple selected in selection) { Assert.IsNotNull(selected, "Selected is null"); } }
public ClientElement (ClientAutomationSource source, IRawElementProviderSimple provider) { ArgumentCheck.NotNull (source, "source"); ArgumentCheck.NotNull (provider, "provider"); this.source = source; this.provider = provider; providerFragment = provider as IRawElementProviderFragment; providerFragmentRoot = provider as IRawElementProviderFragmentRoot; }
public void GetDataGridAndFirstListItem (out IRawElementProviderFragmentRoot dataGrid, out IRawElementProviderFragment firstChild) { IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot) calendarProvider; // The datagrid is the MonthCalendar's first child dataGrid = (IRawElementProviderFragmentRoot) rootProvider.Navigate (NavigateDirection.FirstChild); IRawElementProviderFragmentRoot child = (IRawElementProviderFragmentRoot) dataGrid.Navigate ( NavigateDirection.FirstChild); // Header is next, but skip that firstChild = (IRawElementProviderFragment) child.Navigate ( NavigateDirection.NextSibling); }
public void InvisibleVisibleTest1() { // Similar to InvisibleVisibleTest but with invisible items // before calling Show and getting the provider. IRawElementProviderFragmentRoot rootProvider = null; IRawElementProviderSimple buttonProvider = null; IRawElementProviderSimple checkBoxProvider = null; Button button = null; Form f = new Form(); f.Size = new System.Drawing.Size(400, 400); f.Show(); // Adding invisible button button = new Button(); button.Text = "button"; button.Visible = false; f.Controls.Add(button); // Adding a visible checkbox CheckBox checkbox = new CheckBox(); checkbox.Text = "checkbox"; checkbox.Visible = true; f.Controls.Add(checkbox); f.Show(); // Empty form NO CHILDREN rootProvider = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f); Assert.AreEqual(1, ChildrenCount(rootProvider), "1 children = checkbox"); // Changing visibility bridge.ResetEventLists(); button.Visible = true; Assert.AreEqual(2, ChildrenCount(rootProvider), "2 children"); buttonProvider = ProviderFactory.FindProvider(button); Assert.IsNotNull(buttonProvider, "ButtonProvider missing"); Assert.IsNotNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); buttonProvider = null; bridge.ResetEventLists(); button.Visible = false; Assert.AreEqual(1, ChildrenCount(rootProvider), "1 child = checkbox"); Assert.AreEqual(ControlType.CheckBox.Id, (int)rootProvider.Navigate(NavigateDirection.FirstChild).GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id), "CheckBox is the only child allowed"); buttonProvider = ProviderFactory.FindProvider(button); Assert.IsNull(buttonProvider, "ButtonProvider missing"); Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); buttonProvider = null; // We are already invisible, we don't need to raise any event bridge.ResetEventLists(); f.Controls.Remove(button); Assert.AreEqual(1, ChildrenCount(rootProvider), "1 child = checkbox"); Assert.AreEqual(ControlType.CheckBox.Id, (int)rootProvider.Navigate(NavigateDirection.FirstChild).GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id), "CheckBox is the only child allowed"); buttonProvider = ProviderFactory.FindProvider(button); Assert.IsNull(buttonProvider, "ButtonProvider missing"); Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); // Set checkbox invisible checkBoxProvider = ProviderFactory.FindProvider(checkbox); bridge.ResetEventLists(); checkbox.Visible = false; Assert.AreEqual(0, ChildrenCount(rootProvider), "No children"); Assert.IsNotNull(bridge.GetStructureChangedEventFrom(checkBoxProvider, StructureChangeType.ChildRemoved), "CheckBox. StructureChangeType.ChildRemoved event missing"); f.Dispose(); }
// We need to treat MSAA's FOCUS winevents differently depending on the OBJID - // OBJID_CLIENT gets routed to the proxies; _MENU and _SYSMENU get speical treatment. private AutomationElement GetFocusedElementFromWinEvent(IntPtr hwnd, int idObject, int idChild) { try { IRawElementProviderSimple provider = null; // These are the only object types that oleacc proxies allow to take focus. // (Native IAccessibles can send focus for other custom OBJID valus, but those are no use // to us.) // Try and get providers for them ourself - if we don't get anything, then // defer to core to get the element for the HWND itself. if (idObject == UnsafeNativeMethods.OBJID_CLIENT) { // regular focus - pass it off to a proxy... provider = ProxyManager.ProxyProviderFromHwnd(NativeMethods.HWND.Cast(hwnd), idChild, UnsafeNativeMethods.OBJID_CLIENT); } else if (idObject == UnsafeNativeMethods.OBJID_MENU) { // menubar focus - see if there's a menubar pseudo-proxy registered... ClientSideProviderFactoryCallback factory = ProxyManager.NonClientMenuBarProxyFactory; if (factory != null) { provider = factory(hwnd, idChild, idObject); } } else if (idObject == UnsafeNativeMethods.OBJID_SYSMENU) { // system menu box focus - see if there's a sysmenu pseudo-proxy registered... ClientSideProviderFactoryCallback factory = ProxyManager.NonClientSysMenuProxyFactory; if (factory != null) { provider = factory(hwnd, idChild, idObject); } } else if (idObject <= 0) { return(null); } else { // This covers OBJID_CLIENT and custom OBJID cases. // Pass it to the proxy manager: most proxies will just handle OBJID_CLIENT, // but the MSAA proxy can potentally handle other OBJID values. provider = ProxyManager.ProxyProviderFromHwnd(NativeMethods.HWND.Cast(hwnd), idChild, idObject); } if (provider != null) { // Ask the fragment root if any of its children really have the focus IRawElementProviderFragmentRoot fragment = provider as IRawElementProviderFragmentRoot; if (fragment != null) { // if we get back something that is different than what we started with and its not null // use that instead. This is here to get the subset link in the listview but could be usefull // for listview subitems as well. IRawElementProviderSimple realFocus = fragment.GetFocus(); if (realFocus != null && !Object.ReferenceEquals(realFocus, provider)) { provider = realFocus; } } SafeNodeHandle hnode = UiaCoreApi.UiaNodeFromProvider(provider); return(AutomationElement.Wrap(hnode)); } else { // Didn't find a proxy to handle this hwnd - pass off to core... return(AutomationElement.FromHandle(hwnd)); } } catch (Exception e) { if (Misc.IsCriticalException(e)) { throw; } return(null); } }
public void InvisibleVisibleTest() { IRawElementProviderFragmentRoot rootProvider = null; IRawElementProviderFragment buttonProvider = null; Button button = null; Form f = null; // Exposes 474634 and 464356 using (f = new Form()) { f.Size = new System.Drawing.Size(400, 400); f.Show(); // Empty form NO CHILDREN rootProvider = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f); Assert.AreEqual(0, ChildrenCount(rootProvider), "No children"); // Adding invisible button button = new Button(); button.Text = "button"; button.Visible = false; f.Controls.Add(button); Assert.AreEqual(0, ChildrenCount(rootProvider), "No children"); // Changing visibility bridge.ResetEventLists(); button.Visible = true; Assert.AreEqual(1, ChildrenCount(rootProvider), "1 child"); buttonProvider = (IRawElementProviderFragment)ProviderFactory.FindProvider(button); Assert.IsNotNull(buttonProvider, "ButtonProvider missing"); Assert.IsNotNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); Assert.AreEqual(rootProvider, buttonProvider.Navigate(NavigateDirection.Parent), "FormProvider != button.Parent"); buttonProvider = null; bridge.ResetEventLists(); button.Visible = false; Assert.AreEqual(0, ChildrenCount(rootProvider), "1 child"); buttonProvider = (IRawElementProviderFragment)ProviderFactory.FindProvider(button); Assert.IsNull(buttonProvider, "ButtonProvider missing"); Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); buttonProvider = null; // We are already invisible, we don't need to raise any event bridge.ResetEventLists(); f.Controls.Remove(button); Assert.AreEqual(0, ChildrenCount(rootProvider), "No children"); buttonProvider = (IRawElementProviderFragment)ProviderFactory.FindProvider(button); Assert.IsNull(buttonProvider, "ButtonProvider missing"); Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider, StructureChangeType.ChildAdded), "Button. StructureChangeType.ChildAdded event missing"); } }
public CustomProviderFragment(IRawElementProviderFragmentRoot root) : base(root) { ClickCount = 0; }
public List (IRawElementProviderFragmentRoot provider) : base (provider) { this.provider = provider; selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id); if (selectionProvider == null) throw new ArgumentException ("List should always implement ISelectionProvider"); int controlTypeId = (int) Provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id); if (controlTypeId == ControlType.Spinner.Id) Role = Atk.Role.SpinButton; else Role = Atk.Role.List; selectionHelper = new SelectionProviderUserHelper (provider, selectionProvider); }
public ListWithGrid(IRawElementProviderFragmentRoot provider) : base(provider) { tableExpert = new TableImplementorHelper(this); }
public ListWithEditableText (IRawElementProviderFragmentRoot provider) : base (provider) { IValueProvider value_prov = provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) as IValueProvider; if (value_prov == null) { throw new ArgumentException ("Provider does not implement IValue"); } text_helper = TextImplementorFactory.GetImplementor (this, provider); editableTextExpert = new EditableTextImplementorHelper (this, this, text_helper); }
public AutomationDataGridViewHeaderCell(AutomationDataGridView grid, IRawElementProviderFragmentRoot parent, DataGridViewHeaderCell headerCell) { if (grid == null) throw new ArgumentNullException("grid"); if (headerCell == null) throw new ArgumentNullException("headerCell"); if (parent == null) throw new ArgumentNullException("parent"); _grid = grid; _headerCell = headerCell; _parent = parent; }
public ListWithGrid (IRawElementProviderFragmentRoot provider) : base (provider) { tableExpert = new TableImplementorHelper (this); }
public void PatternsTest() { ComboBox combobox = GetComboBox(); combobox.Items.Add("dummy 0"); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(combobox); if (combobox.DropDownStyle == ComboBoxStyle.DropDownList) { throw new Exception("combobox default style should not be dropdownlist"); } IExpandCollapseProvider expandCollapseProvider = null; IRawElementProviderFragment listChild = null; bridge.ResetEventLists(); combobox.DropDownStyle = ComboBoxStyle.DropDownList; Assert.IsTrue(bridge.StructureChangedEvents.Count > 0, "Should generate some event after changing to ComboBoxStyle.DropDownList"); Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id), "DropDownList: Selection Pattern IS supported"); expandCollapseProvider = (IExpandCollapseProvider) rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id); Assert.IsNotNull(expandCollapseProvider, "DropDownList: ExpandCollapse Pattern IS supported"); Assert.IsNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id), "DropDownList: ValuePattern Pattern IS NOT supported"); listChild = rootProvider.Navigate(NavigateDirection.FirstChild); Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should be offscreen if it's not expanded"); expandCollapseProvider.Expand(); Assert.IsFalse((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should not be offscreen if it's expanded"); expandCollapseProvider.Collapse(); Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should be offscreen after collapsing"); TestChildPatterns(rootProvider); bridge.ResetEventLists(); combobox.DropDownStyle = ComboBoxStyle.DropDown; Assert.IsTrue(bridge.StructureChangedEvents.Count > 0, "Should generate some event after changing to ComboBoxStyle.DropDown"); Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id), "DropDown: Selection Pattern IS supported"); expandCollapseProvider = (IExpandCollapseProvider) rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id); Assert.IsNotNull(expandCollapseProvider, "DropDown: ExpandCollapse Pattern IS supported"); Assert.IsNotNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id), "DropDown: ValuePattern Pattern IS supported"); TestChildPatterns(rootProvider); listChild = rootProvider.Navigate(NavigateDirection.FirstChild); Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should be offscreen if it's not expanded"); expandCollapseProvider.Expand(); Assert.IsFalse((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should not be offscreen if it's expanded"); expandCollapseProvider.Collapse(); Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id), "the list of a combobox should be offscreen after collapsing"); bridge.ResetEventLists(); combobox.DropDownStyle = ComboBoxStyle.Simple; Assert.IsTrue(bridge.StructureChangedEvents.Count > 0, "Should generate some event after changing to ComboBoxStyle.Simple"); Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id), "Simple: Selection Pattern IS supported"); // LAMESPEC: ExpandCollapsePatternIdentifiers must always be implemented Assert.IsNull(rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id), "Simple: ExpandCollapse Pattern IS NOT supported"); Assert.IsNotNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id), "Simple: ValuePattern Pattern IS supported"); TestChildPatterns(rootProvider); }
protected BaseFragmentProvider(IRawElementProviderFragment parent, IRawElementProviderFragmentRoot fragmentRoot) { this.parent = parent; this.fragmentRoot = fragmentRoot; }