2014-09-24 7 views
0

Я использую кодированный ui-тест с моим окном. неПоиск дочернего элемента управления

Моя иерархия управления:.

UIPearsonPOCCommonViewFlipViewItem (XAMLFlipViewItem -> UIWebViewPane (XAMLWebViewPane) -> Остального содержания

Для остальных дочерних элементов управления, нет конкретного идентификатор автоматизации или уникальных имена и они выглядят как контроль HTML, например, для отсылают добавляются изображение.

Я хочу перебрать ребенок UIWebViewPane и достигает ребенок DIV, который, имеющий InnerText.

Я относительно новичок в кодировке ui test. Я не может перебрать ребенок UIWebViewPane (XAMLWebViewPane)

enter image description here

ответ

3

Если внутренний текст дочернего элемента управления является уникальным, вы всегда можете найти на что с помощью Родительского контроля в определении. Пример:

public HtmlControl child() 
{ 
    HtmlControl parent = new HtmlControl(browser); 
    parent.SearchProperties["id"] = "[my id]"; 

    HtmlControl child = new HtmlControl(parent); 
    child.SearchProperties["innerText"] = "[the inner text]"; 
    return child; 
} 

Если вы действительно хотите перебрать, то вам придется сканировать структуру, используя .GetParent() и .GetChildren() методы класса UITestControl.

public HtmlControl child() 
{ 
    //First, we create an empty HtmlControl to return. 
    HtmlControl result = new HtmlControl() 

    //Specify the parent and get a collection of the children (this only goes one level, 
    // so if you have to go deeper, you'll have to nest your foreach loops and get 
    // children of the children, etc. 
    HtmlControl parent = new HtmlControl(browser); 
    parent.SearchProperties["id"] = "[my id]"; 
    UITestControlCollection children = parent.GetChildren(); 

    foreach (UITestControl child in children) 
    { 
     // If the child has the text you're looking for, then assign it to the result 
     // object and break the loop. 
     if (child.GetProperty("InnerText").ToString().Equals(searchTerm)) 
     { 
      result = (HtmlControl)child; 
      break; 
     } 
    } 

    return result; 
} 

Лично я бы попробовал первый вариант. Лучше всего, однако, попросить (вежливо) попросить разработчика добавить в HTML несколько уникальных и статических тегов.