我正在开发一个支持javascript的功能测试解决方案。
当然,使用Symfony Framework,我选择Behat和Sahi驱动程序,我的测试套件是绿色的。问题是sahi很慢,而且不够稳定,这就是我转向PhantomJs的原因,正如这篇博文提到的: - > http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/
我的一些测试保持绿色,但是当我使用$this->getSession()->getDriver()->evaluateScript()
时,没有返回,我无法评估javascript。
如果有人处理并找到解决方案......
++
答案 0 :(得分:2)
你还没有解决问题?试试吧:
$this->getSession()->getDriver()->evaluateScript(
"function(){ return 'some expression'; }()"
);
答案 1 :(得分:1)
在您的方法中,您可以使用:
$result = $this->getSession()->evaluateScript("$('input').val();");
var_dump($result);
在我的用例中,将返回代码中第一个输入标记的值。 如您所见,如果您在页面中使用了jQuery,则可以使用它。
"场景"必须使用标记@javascript
运行答案 2 :(得分:0)
我试图使用内置的步骤定义fillField()填充Drupal文本字段(即"我填写" textfield"使用"我的值")和在值中,我有一个左括号的开括号。然后我决定编写一个自定义函数来以编程方式附加值,如下所示:
$element = $session->getPage()->find(
'xpath',
$session->getSelectorsHandler()->selectorToXpath('css', $cssSelector) // just changed xpath to css
);
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Could not evaluate CSS Selector: "%s"', $cssSelector));
}
$element->focus();
$element->setValue("(2090)");
但是这也有同样的问题(开头括号会脱掉并将值保留为" 2090)"
最后,我设法使用你的jquery例子让它工作:
$this->getSession()->evaluateScript("jQuery('#edit-og-group-ref-und-0-default').val("(2090)");");
瞧它确实奏效了。谢谢。