Autocomplete Drupal的问题&x27;带Behat的s自动完成测试
我正在测试Drupal生成的一个表单,其中有一些自动完成功能来帮助人们做出正确的选择 在此表单中,有3个字段允许用户选择3篇文章(“实现”),一旦您开始键入内容,自动完成将生成具有类似标题的文章列表 以下是一个例子: 问题是,我在做一些测试时意识到,使用Autocomplete Drupal的问题&x27;带Behat的s自动完成测试,autocomplete,behat,Autocomplete,Behat,我正在测试Drupal生成的一个表单,其中有一些自动完成功能来帮助人们做出正确的选择 在此表单中,有3个字段允许用户选择3篇文章(“实现”),一旦您开始键入内容,自动完成将生成具有类似标题的文章列表 以下是一个例子: 问题是,我在做一些测试时意识到,使用$this->getSession()->getPage()->fillField()会使Behat在字段上失去焦点,就像填充字段后按Tab键一样 所以我尝试了很多技巧来获得这个领域的关注,比如: $field = $this->getS
$this->getSession()->getPage()->fillField()
会使Behat在字段上失去焦点,就像填充字段后按Tab键一样
所以我尝试了很多技巧来获得这个领域的关注,比如:
$field = $this->getSession()->getPage()->findField('field_mb_actualites[0][target_id]');
if($field) {
// Solution #1
// the dropdown menu is inside a `ul#ui-id-1` element
$this->getSession()->executeScript("jQuery('#ui-id-1').show();");
// Solution #2
$field->focus();
// Solution #3
// Consists of pressing "shift + tab" for a "reverse tab" and trying to get back to the field
$this->getSession()->getDriver()->keyDown($xpath, 16);
$this->getSession()->getDriver()->keyDown($xpath, 9);
$this->getSession()->getDriver()->keyUp($xpath, 9);
$this->getSession()->getDriver()->keyUp($xpath, 16);
// And I take a screenshot at the end to see if anything worked
file_put_contents('screenshot-focus.png', $this->getSession()->getDriver()->getScreenshot());
}
但我总是得到同样的结果,那就是:
$field = $this->getSession()->getPage()->findField('field_mb_actualites[0][target_id]');
if($field) {
// Solution #1
// the dropdown menu is inside a `ul#ui-id-1` element
$this->getSession()->executeScript("jQuery('#ui-id-1').show();");
// Solution #2
$field->focus();
// Solution #3
// Consists of pressing "shift + tab" for a "reverse tab" and trying to get back to the field
$this->getSession()->getDriver()->keyDown($xpath, 16);
$this->getSession()->getDriver()->keyDown($xpath, 9);
$this->getSession()->getDriver()->keyUp($xpath, 9);
$this->getSession()->getDriver()->keyUp($xpath, 16);
// And I take a screenshot at the end to see if anything worked
file_put_contents('screenshot-focus.png', $this->getSession()->getDriver()->getScreenshot());
}
获得焦点后,我需要做的就是按“右”方向箭头使下拉列表再次可见,然后按“下”方向箭头选择建议,然后按“回车”确认选择
然而,我开始没有想法了,尽管我在Behat的github上发现了一些关于这个问题的问题,但我无法设法让答案起作用。如何触发自动完成
提前感谢您可以使用JavaScript函数触发如下事件:
公共函数triggerEventOn($css\u选择器){
$function=executeScript($function);
}捕获(例外$e){
}
}
您想做什么?触发自动完成或隐藏它?触发它(我将编辑我的问题以精确说明这一点)您需要创建一个脚本来触发显示自动完成的正确事件,并在填充字段后执行它,明天我可以给你写一个例子。你需要触发的事件可以通过该元素上的inspect找到。那么我必须在填充字段之前或之后放置此代码吗?好的,我知道了,我必须做一些调整以使我的代码适应你的解决方案,它工作得很好,谢谢!