2013-12-16 63 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)");"); 

瞧它的工作。謝謝。