HtmlList: выбор параметров в выделении с отступом
Я использую собственность SelectedItemsAsString
из HtmlList
Объект для выбора нескольких элементов в теге выбора.
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 ответ
Вы правы. Похоже, ошибка 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)