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)
Другие вопросы по тегам