2016-01-28 7 views
1

Я работаю над приложением WinForms. В окне есть элемент управления, который показывает ControlType.List в VisualUIAVerify. Я могу получить экземпляр элемента управления с помощью типа Control как ListView и automationId. Я также могу получить строку, основанную на имени строки. Однако, когда я пытаюсь нажать на выбранную строку, это не сработает. Я попробовал Click(), RaiseClickEvent(), DoubleClick() и Select() в строке.Невозможно выбрать строку ListView с использованием White Framework

Ниже приведен пример фрагмент кода:

ListView lstOrderables = CurrentWindow.Get<ListView>(SearchCriteria.ByAutomationId("lstOrderables")); 
      foreach(ListViewRow row in lstOrderables.Rows) 
      { 
       if (String.Compare(row.Name, "Post TR DAT", true) == 0) 
       { 
        row.Click(); 
        break; 
       } 
      } 

Что еще можно сделать для решения этой проблемы?

ответ

1

Мы можем достичь его с помощью SelectedItemPattern следующим образом:

ListView lstOrderables = automationControl.ControlOfType<ListView>(SearchCriteria.ByAutomationId("lstOrderables")); 
     foreach(ListViewRow row in lstOrderables.Rows) 
     { 
      if (String.Compare(row.Name, "ABC", true) == 0) 
      { 
       SelectionItemPattern pattern = (SelectionItemPattern)(BasePattern)row.AutomationElement.GetCurrentPattern(SelectionItemPattern.Pattern); 
       pattern.Select(); 
       break; 
      } 
     } 

Это будет выбран экземпляр строки с именем ABC.

+0

Это решение работает, но необходимо пояснить, что вам нужно добавить ссылку на сборку 'UIAutomationClient' и' UIAutomationTypes', а также 'using System.Windows.Automation;' в верхней части кода – Tuco