在带有代码的动态选择中选择一个选项?

时间:2013-07-01 21:26:28

标签: codeception

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

选择第一个动态选项

3 个答案:

答案 0 :(得分:19)

$option = $I->grabTextFrom('select option:nth-child(2)');
$I->selectOption("select", $option);
$I->click("Submit");

答案 1 :(得分: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);

这对我来说很有用,因为这些页面上有几个选项会根据前面选择的选项加载他们的选项列表。

答案 2 :(得分:1)

抱歉,我没有提交按钮,在我的情况下,我必须选择下拉元素,并以某种方式需要告诉代码完成选择。我可以选择的那一刻,但选择是不可见的,因为我想选择没有完成.Below是我选择元素的代码。

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