Селен - как выбрать опцию из списка опций? (где известен только частичный текст?) - PullRequest
0 голосов
/ 11 января 2012

Выберите элемент опции, который частично совпадает со строкой (если это невозможно, мне нужно будет ввести полное имя перечисленных элементов опции в программу, чтобы его можно было выбрать)

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>

Ответы [ 5 ]

2 голосов
/ 11 января 2012

Вы можете использовать селектор XPath: // выберите [@id = '_ myselector'] / option [содержит (., 'TQW')]

Для более конкретного ответа может быть полезно узнать, используете ли вы язык сценариев selenium с Selenium IDE или определенную языковую оболочку (Java, python, ruby ​​и т.

1 голос
/ 11 января 2012

Использовать селектор xpath "//select[@id='_myselector']/option[contains(text(),'TQW')]"

1 голос
/ 11 января 2012
<tr>
    <td>select</td>
    <td>id=_myselector</td>
    <td>label=glob:option* 4493</td>
</tr>
0 голосов
/ 22 июня 2016

Вы можете использовать встроенный класс SelectElement в Namspace Selenium.Support.UI

Вот метод расширения, который я создал, чтобы помочь с этим.

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;
        }
    }

Я просто перечитал ваш пост, и вы хотели выбрать совпадение с частичной строкой, я не знаю, как это сделать, и предпочитаю использовать более строгие методы.Поэтому я склонен использовать индекс или значение.

Но надеюсь, это поможет вам в правильном направлении.

0 голосов
/ 11 января 2012

Это в рубине селен webdriver-

@driver.find_element(:id, "_myselector").find_element(:css,"option[value='1']").click
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...