获取带有编码ui testmethod的silverlight列表项

时间:2014-01-22 14:02:22

标签: c# silverlight visual-studio-2012 automated-tests coded-ui-tests

我有一个非常简单的silverligt页面,其中包含此列表框

<ListBox ItemsSource="{Binding itemList}" x:Name="list">
    <ListBox.ItemTemplate>
        <DataTemplate x:Name="datatemplate" >
            <Grid Name="grid" AutomationProperties.AutomationId="grid" >
                <TextBlock Text="{Binding Txt}" AutomationProperties.AutomationId="{Binding Id}"></TextBlock>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我希望我的Coded UI测试选择此列表项之一并单击它,但我不知道如何搜索项列表。 我尝试了一切,但我无法弄清楚如何得到它。

这是我简单的测试方法

public void ClickOnItem()
{

    SilverlightList list = new SilverlightList(this.UISilverlightApplicatiWindow.UISilverlightApplicatiDocument.UISilverlightControlHoPane.UIItemCustom.UIMainPageMainPage.UIListList);
    list.SearchProperties.Add(SilverlightList.PropertyNames.AutomationId, "list");

    SilverlightListItem item = new SilverlightListItem(list);

    item.SearchProperties.Add(SilverlightListItem.PropertyNames.AutomationId, "3");
    Mouse.Click(item);
}

(其中“3”是列表中的第三个元素,ofc)

我要搜索什么? 我需要额外的xaml标签吗?

1 个答案:

答案 0 :(得分:0)

我不确定这是否是你想要的但是:

拥有Framework元素后,您可以使用&#34; Items&#34;来访问这些项目。财产本身。 实施例

var item = list.Items[index]

或使用Linq

var item = list.Items.First(c => c.Id == 3);

获得该项目后,您可以使用SelectedItem属性选择它,如下所示:

list.SelectedItem = item;

或视情况而定

list.SelectedValue = item;

要触发click事件,您只需调用它即可将参数作为

list.OnMouseLeftButtonDown(null)

这意味着您希望在没有参数的情况下触发它。

请参考以下链接作为来源 http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox%28VS.95%29.aspx