2013-12-16 32 views
5

我正在使用javascript支持进行功能测试的解决方案。用behat和phantomjs执行javascript

当然,使用Symfony Framework,我选择Behat和Sahi驱动程序,并且我的测试套件是绿色的。问题是,SAHI是相当缓慢,并没有足够稳定的,这就是为什么我转PhantomJs因为这个博客帖子中提到: - >http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

我的一些测试中保持绿色,但是当我使用$this->getSession()->getDriver()->evaluateScript(),有没有回报,我无法评估JavaScript。

如果有人曾经处理,并找到了解决办法...

++

+0

为了进行测试,有样本项目: https://github.com/Shashikant86/BehatDemo – fxlacroix

回答

2

你还没有解决这个问题?试试看:

$this->getSession()->getDriver()->evaluateScript(
    "function(){ return 'some expression'; }()" 
); 
+0

请添加您的其他问题,评论部分,而不是答案 –

+0

是的,对不起,我没有仔细阅读规则) –

1

里面你的方法,你可以使用:

$result = $this->getSession()->evaluateScript("$('input').val();"); 
var_dump($result); 

在我的使用情况下,将返回代码中的第一个输入变量的值。如你所见,你可以使用jQuery,如果你的页面中有它。

的“方案”必须与标签上运行@javascript

0

我试图用一个Drupal文本框填写内置的步骤定义fillField()(即“我填的‘文本框’与”我的价值“)和我有一个左括号它会得到剥离值然后,我决定写一个自定义的函数以编程方式追加值,如下所示:

$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)");"); 

瞧它的工作。谢谢。