Behat/Mink 和 Select2 组合
Behat/Mink and Select2 combo
我尝试使用 Select2 创建 Web UI 的 Behat 场景。
当我尝试更改 select 值时,出现 Behat 错误,因为基数 select 被 Select2 隐藏。
但是 select2 组件已经出现错误,因为 mink 无法与之交互。
您是否已将 Behat/Mink 与 Select2 一起使用?你有帮助我的提示吗?
我被那个问题困住了,但我已经用我在 Filling in hidden inputs with Behat 找到的信息浏览了它。
我的解决方案略有不同:
/**
* @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
*/
public function iFillHiddenFieldWith($class, $value){
$this->getSession()->getPage()->find('css', $class)->setValue($value);
}
然后我按以下方式使用它:
And I fill hidden field "#s2id_edit-my-field input" with "random value".
我终于写了一个 Behat 来像用户一样与 Select2 字段交互。
此处是最完整步骤的摘录:
/**
* @When /^(?:|I )fill in select2 input "(?P<field>(?:[^"]|\")*)" with "(?P<value>(?:[^"]|\")*)" and select "(?P<entry>(?:[^"]|\")*)"$/
*/
public function iFillInSelectInputWithAndSelect($field, $value, $entry)
{
$page = $this->getSession()->getPage();
$inputField = $page->find('css', $field);
if (!$inputField) {
throw new \Exception('No field found');
}
$choice = $inputField->getParent()->find('css', '.select2-selection');
if (!$choice) {
throw new \Exception('No select2 choice found');
}
$choice->press();
$select2Input = $page->find('css', '.select2-search__field');
if (!$select2Input) {
throw new \Exception('No input found');
}
$select2Input->setValue($value);
$this->getSession()->wait(1000);
$chosenResults = $page->findAll('css', '.select2-results li');
foreach ($chosenResults as $result) {
if ($result->getText() == $entry) {
$result->click();
break;
}
}
}
几天后我将在 Github 上开源 Select2 上下文。
我尝试使用 Select2 创建 Web UI 的 Behat 场景。
当我尝试更改 select 值时,出现 Behat 错误,因为基数 select 被 Select2 隐藏。
但是 select2 组件已经出现错误,因为 mink 无法与之交互。
您是否已将 Behat/Mink 与 Select2 一起使用?你有帮助我的提示吗?
我被那个问题困住了,但我已经用我在 Filling in hidden inputs with Behat 找到的信息浏览了它。
我的解决方案略有不同:
/**
* @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
*/
public function iFillHiddenFieldWith($class, $value){
$this->getSession()->getPage()->find('css', $class)->setValue($value);
}
然后我按以下方式使用它:
And I fill hidden field "#s2id_edit-my-field input" with "random value".
我终于写了一个 Behat 来像用户一样与 Select2 字段交互。
此处是最完整步骤的摘录:
/**
* @When /^(?:|I )fill in select2 input "(?P<field>(?:[^"]|\")*)" with "(?P<value>(?:[^"]|\")*)" and select "(?P<entry>(?:[^"]|\")*)"$/
*/
public function iFillInSelectInputWithAndSelect($field, $value, $entry)
{
$page = $this->getSession()->getPage();
$inputField = $page->find('css', $field);
if (!$inputField) {
throw new \Exception('No field found');
}
$choice = $inputField->getParent()->find('css', '.select2-selection');
if (!$choice) {
throw new \Exception('No select2 choice found');
}
$choice->press();
$select2Input = $page->find('css', '.select2-search__field');
if (!$select2Input) {
throw new \Exception('No input found');
}
$select2Input->setValue($value);
$this->getSession()->wait(1000);
$chosenResults = $page->findAll('css', '.select2-results li');
foreach ($chosenResults as $result) {
if ($result->getText() == $entry) {
$result->click();
break;
}
}
}
几天后我将在 Github 上开源 Select2 上下文。