Select
класс может обрабатывать выпадающий список с множественным выбором.Он даже проверяет, является ли выпадающий список множественным выбором при использовании DeselectAll()
.От github
public void DeselectAll()
{
if (!this.IsMultiple)
{
throw new InvalidOperationException("You may only deselect all options if multi-select is supported");
}
foreach (IWebElement option in this.Options)
{
SetSelected(option, false);
}
}
private static void SetSelected(IWebElement option, bool select)
{
bool isSelected = option.Selected;
if ((!isSelected && select) || (isSelected && !select))
{
option.Click();
}
}
Когда вы нажимаете на первую опцию выбора без нажатия клавиши управления, эта опция остается выбранной, но все остальные опции отменяются, поэтому на самом деле щелчок не выполняетсяпо остальным параметрам, так как isSelected
и select
имеют значение false
в SetSelected
.
Решение состоит в том, чтобы либо реализовать свой собственный DeselectAll()
, как предлагается в вашем вопросе, либо выбрать первыйиз раскрывающегося списка (который автоматически отменит выбор всех остальных параметров), а затем отмените выбор этого параметра с помощью элемента управления.