如何使用硒遍历非选择下拉列表

本文关键字:选择 下拉列表 遍历 何使用 | 更新日期: 2023-09-27 18:20:48

我正在尝试获取KendoUI下拉列表中的所有可用选项,该下拉列表使用"k-dropdown"作为控件,而不是"select"。因此,我不能使用类似的东西(因为没有选择元素):

    public void ChooseOrderType(string type)
    {
        var mySelect = new SelectElement(TypeDropDownLocator);
        var options = mySelect.Options;
        foreach (var option in options) {
            if (option.Text.Equals(type))
                option.Click();
        }
    }

HTML:

<span class="k-widget k-dropdown k-header" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="orderStatus_listbox" aria-disabled="false" aria-readonly="false" aria-busy="false" aria-activedescendant="orderStatus_option_selected">
    <span unselectable="on" class="k-dropdown-wrap k-state-default">
        <span unselectable="on" class="k-input">All orders</span>
        <span unselectable="on" class="k-select">
            <span unselectable="on" class="k-icon k-i-arrow-s">select</span>
        </span>
    </span>
    <input id="orderStatus" name="orderStatus" type="text" data-role="dropdownlist" style="display: none;">
    </span>

有没有任何方法可以手动遍历以获得所有选项?

编辑:我用JeffC的方法:

public ViewOrdersPage SearchDraftOrders(string type)
{
    TypeDropDownLocator.Click();
    Driver.FindElement(By.XPath("id('orderStatus_listbox')/li[2]")).Click();
    SearchOrdersButton.Click();
    return this;
}

如何使用硒遍历非选择下拉列表

正如您所发现的,您将无法使用SelectElement类型。相反,您需要像对待其他元素一样对待它。您需要单击类似SELECT的元素来打开下拉列表,然后单击表示要选择的类似OPTION的元素的元素。您可能需要在两次单击之间等待一段时间,具体取决于下拉菜单打开的速度。

如果没有看到用于下拉列表和选项的整个HTML,我无法提供代码,但您可以按照上面的说明自行解决。