Кодек доступ выбранный выбрать

При использовании выбранного элемент select становится скрытым и не может быть выбран с помощью codeception. Я попробовал это, как это:

$I->selectOption('form select[name="jform[plugin_id]"]', array('value' => '10054'));

или это:

$I->selectOption('div#jformplugin_id_chzn .chzn-results', 'Optimizer');

или это:

$I->click(['css' => 'div#jformplugin_id_chzn']); 
$I->fillField(['xpath' => '//div[@id="jformplugin_id_chzn"]/div/div/input'], 'Optimizer');
$I->click(['xpath' => '//div[@id="jformplugin_id_chzn"]/div/ul/li[1]']);

Ничего не работает.


Вот HTML-код, к которому я пытаюсь получить доступ:

    <select id="jformplugin_id" name="jform[plugin_id]" style="display: none;">
        <option value="" selected="selected">- Selection -</option>
        <option value="10037">test3</option>
        <option value="10038">test2</option>
        <option value="10054">Optimizer</option>    
        <option value="10058">test1</option>
    </select>

   <div class="chzn-container chzn-container-single chzn-container-single-nosearch" title="" id="jformplugin_id_chzn"><a class="chzn-single" tabindex="-1"><span>- Selection -</span><div><b></b></div></a>
    <div class="chzn-drop">
        <div class="chzn-search"><input type="text" readonly=""></div>
        <ul class="chzn-results">
            <li class="active-result result-selected" style="" data-option-array-index="0">- Selection -</li>
            <li class="active-result" style="" data-option-array-index="1">test3</li>
            <li class="active-result" style="" data-option-array-index="2">test2</li>
            <li class="active-result" style="" data-option-array-index="3">Optimizer</li>
            <li class="active-result" style="" data-option-array-index="4">test1</li>
        </ul>
    </div>
</div>

2 ответа

  1. Вы не можете использовать ни один из ваших методов на невидимых элементах. Единственный способ изменить значение select-выполнить Javascript, что-то вроде этого:

    $I->executeJS('document.getElementById("jformplugin_id").value = 10054;');
    

    Кстати на большой выбирает с большим количеством опций выбор значения с Javascript намного быстрее, чем с помощью встроенного метода selectOption.