HtmlList:选择带填充的选项中的选项

时间:2014-06-26 09:04:03

标签: padding html-select coded-ui-tests

我使用SelectedItemsAsString对象中的属性HtmlList来选择select-Tag中的多个项目。

myHtmlList.SelectedItemsAsString = new string[] {"a"};

这在演示中可以正常工作,但在我的高效网站中却没有,因为我的select-Tag有左边填充。

<select multiple="multiple" style="padding-left: 12px; width: 400px;">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>

这导致鼠标点击到实际选项的左侧,因此没有选择任何选项。 任何想法如何在不删除填充的情况下使其工作?

1 个答案:

答案 0 :(得分:0)

你是对的。对我来说似乎是一个CodedUI错误。它不是单击列表项控件,而是单击所选项目行的左上角。

作为替代方案,我们可以自行点击并选择项目。

var selectedItems = new string[] { "a", "c" };

// Clear any existing selections
myHtmlList.SelectedIndices = new int[] { };

// Select items
myHtmlList.GetChildren().Cast<HtmlListItem>().ToList().ForEach(f =>
{
    Keyboard.PressModifierKeys(ModifierKeys.Control);
    if (selectedItems.Contains(f.DisplayText))
    {
        Mouse.Click(f);
    }
    Keyboard.ReleaseModifierKeys(ModifierKeys.Control);
});

上面的代码将找到HtmlList的所有子项,将它们转换为HtmlListItem。如需选择,将按“CTRL”键开始,然后对于每个列表项,如果显示文本与所选项目列表匹配,则将单击列表项。最后它将释放“CTRL”键。

如果您的应用程序中有很多HtmlList项目,那么我建议将其转换为HtmlList的扩展方法。

像这样。

public static void SelectItems(this HtmlList htmlList, string[] selectedItems)