List 如何遍历所有<;选择>;behat/mink中的字段选项

List 如何遍历所有<;选择>;behat/mink中的字段选项,list,option,loops,behat,mink,List,Option,Loops,Behat,Mink,我正在测试一个产品搜索表单。可以通过不同的参数(如状态、材料、重量等)搜索产品。当我想按状态搜索时,我会执行以下操作: Scenario Outline: search by status When I select "<status>" from "search_form_status" And I press "Search" And I wait for 3 seconds // implemented And I

我正在测试一个产品搜索表单。可以通过不同的参数(如状态、材料、重量等)搜索产品。当我想按状态搜索时,我会执行以下操作:

Scenario Outline: search by status
  When I select "<status>" from "search_form_status"
  And I press "Search"
  And I wait for 3 seconds                        // implemented
  And I follow random link from test result table // implemented
  Then I should see "<status>" in the "div#status" element
Examples:
  |status  |
  |enabled |
  |disabled|
使用foreach循环执行以下步骤:

$matList=$this->getSession()->getPage()->findAll('css',“选择选项”);
foreach($matList作为$material){
//做点什么
}
}
但是如何创建
状态
示例中的所有其他步骤呢? 我想我会在search.feature文件的以下步骤中使用
$material
变量来执行该自定义步骤之后的步骤。但是我该怎么做呢?
如何遍历所有选项列表并在每次迭代中执行一系列步骤?

您需要在包含选择所有选项的代码的方法中编写PHP代码,以运行所需的各个步骤

例如:

$handler = $this->getSession()->getSelectorsHandler();

$optionElements = $this->getSession()->getPage()->findAll('named', array('option', $handler->selectorToXpath('css', 'select ));

foreach ($optionElements as $optionElement) {
    $this->getSession()->getPage()->selectFieldOption('portal', $optionElement->getValue());
    $this->pressButton("show");
    $this->assertPageContainsText(" - Report Report");
}

您不必在一个测试用例中测试所有特性。试着测试(如果不可能的话,重构)代码,这样每个测试只测试一件事,并且做得很好。在您的案例中,您可以为材质创建测试,并定义两个不同但有意义的案例:-无材质(如果可能)-最小材质数-两个平均材质集-最大(如果定义)材质集更改材质数,材料名称等可在专门为此目的进行的单独测试中进行测试。欢迎!:)我猜你不明白我的意思。我只想测试一个功能-按材料搜索产品。我不能确定我有什么材料,有多少。
$handler = $this->getSession()->getSelectorsHandler();

$optionElements = $this->getSession()->getPage()->findAll('named', array('option', $handler->selectorToXpath('css', 'select ));

foreach ($optionElements as $optionElement) {
    $this->getSession()->getPage()->selectFieldOption('portal', $optionElement->getValue());
    $this->pressButton("show");
    $this->assertPageContainsText(" - Report Report");
}