我使用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>
这导致鼠标点击到实际选项的左侧,因此没有选择任何选项。 任何想法如何在不删除填充的情况下使其工作?
答案 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)