Codeception访问选择选择

时间:2017-01-13 17:47:28

标签: php testing codeception

使用Chosen时,select元素被隐藏,无法通过代码选择。我试过这样的话:

$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 个答案:

答案 0 :(得分:0)

尝试这样的事情: $ I-&gt; executeJS(“document.querySelector('#jformplugin_id')。style.display = block;”);

答案 1 :(得分:0)

您不能在隐形元素上使用任何方法。更改选择值的唯一方法是执行Javascript,如下所示:

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

顺便说一下,有很多选项的大选择用Javascript选择值比用内置方法selectOption快很多。