硒-如何从选项列表中选择选项?(只有部分文本是已知的?)

本文关键字:选项 文本 列表 选择 | 更新日期: 2023-09-27 18:19:53

选择部分匹配字符串的选项项(如果不可能,我需要将列出的选项项的全名输入程序中,以便可以选择)

Example if you want to select optionTQW 4493, you can just select with TQW?
<select id="_myselector" name="select-list">
<option value='1'>OptionZ 2345</option>
<option value='2'>optionTQW 4493</option>             
</select>

硒-如何从选项列表中选择选项?(只有部分文本是已知的?)

您可以使用XPath选择器://select[@id='_myselector']/option[contains(.,'TQW')]

对于更具体的答案,了解您是将selenium脚本语言与selenium IDE一起使用,还是使用某种语言包装器(Java、python、ruby等)

可能会有所帮助
<tr>
    <td>select</td>
    <td>id=_myselector</td>
    <td>label=glob:option* 4493</td>
</tr>

使用xpath选择器"//select[@id='_myselector']/option[contains(text(),'TQW')]"

这是在ruby selenium webdriver-中

@driver.find_element(:id, "_myselector").find_element(:css,"option[value='1']").click

您可以在Selenium.Support.UI Namspace 中使用内置的SelectElement

下面是我创建的一个扩展方法。

public static void SelectOptionFromDropdown(this IWebDriver driver,IWebElement dropdown, SelectBy selectBy, string item)
    {
        switch (selectBy)
        {
            case SelectBy.Index:
                int index;
                if (Int32.TryParse(item, out index))
                {
                    new SelectElement(dropdown).SelectByIndex(index);
                }
                else
                {
                    ExceptionHandler.LogException("Unable to Convert String To Int", "WebdriverExtension", "SelectOptionFromDropdown");
                    throw new Exception();
                }
                break;
            case SelectBy.Text:
                new SelectElement(dropdown).SelectByText(item);
                break;
            case SelectBy.Value:
                new SelectElement(dropdown).SelectByValue(item);
                break;
        }
    }

我刚刚重读了你的帖子,你想在部分字符串匹配上进行选择,我不知道如何做到这一点,我更喜欢使用更严格的方法。所以我倾向于使用Index或Value。

但希望这能帮你指明正确的方向。