Выбрать параметр в динамическом выборе с помощью кода?

<select>
    <option value=''>-- Select an Option --</option>
    @foreach ($options as $option)
        <option value='{{ $option->value }}'>{{ $option->name }}</option>
    @endforeach
</select> 

Выберите первый динамический вариант


person Michael J. Calkins    schedule 01.07.2013    source источник


Ответы (3)


Я довольно часто сталкивался с одной и той же проблемой, когда начинал с Codeception. Используя рекомендуемый ответ, я создал вспомогательную функцию в своем классе AcceptanceTester, чтобы сделать это немного проще.

public function selectFromDropdown($selector, $n)
{
    $option = $this->grabTextFrom($selector . ' option:nth-child(' . $n . ')');
    $this->selectOption($selector, $option);
}

Где $n — позиция в списке опций.

Тогда все, что вам нужно сделать, это вызвать его следующим образом:

$I->selectFromDropdown('select', 1);

Это работало для меня на страницах, на которых есть несколько вариантов выбора, которые загружают свой список параметров на основе выбранного параметра предыдущего выбора.

person Collier Devlin    schedule 10.06.2016

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

$I->selectOption('//*[@class="ng-scope" and @ng-controller="dataIsland"]/*[local-  name()="select"]','partlycloudy');
person shab    schedule 04.05.2014

person    schedule
comment
Есть ли способ определить количество доступных опций? - person realtebo; 05.06.2014
comment
Обратите внимание, что вы можете выбрать ПОСЛЕДНИЙ дочерний элемент с помощью: 'select option:last-child' и что вы можете начать обратный отсчет с конца списка опций, при этом 'select option:nth-last-child(-2)' будет вторым -последний пункт и т.д. - person Dave; 26.08.2014
comment
Также обратите внимание, что для страницы с несколькими элементами ‹select› вам придется использовать более конкретный селектор вместо простого 'select', например 'select#my-element-id option:nth-child(2) ' - person Dave; 26.08.2014