2013-12-16 4 views
5

मैं जावास्क्रिप्ट समर्थन के साथ कार्यात्मक परीक्षण के समाधान पर काम कर रहा हूं।व्यवहार और phantomjs के साथ जावास्क्रिप्ट निष्पादित करें

स्वाभाविक रूप से, सिम्फनी फ्रेमवर्क का उपयोग करके, मैं साही चालक के साथ बेहट चुनता हूं, और मेरे परीक्षण में हरा होता है। समस्या यह है कि साही काफी धीमा है, और काफी स्थिर नहीं है था और यही वजह है कि मैं PhantomJs की ओर रुख के रूप में इस ब्लॉग पोस्ट का उल्लेख है: ->http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

मेरी परीक्षणों में हरे रंग की रहने, लेकिन जब मैं $this->getSession()->getDriver()->evaluateScript() उपयोग करते हैं, वहाँ है कोई वापसी नहीं है और मैं जावास्क्रिप्ट का मूल्यांकन नहीं कर सकता।

अगर किसी कभी साथ सौदा है और एक समाधान मिला ...

++

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

लेकिन यह भी एक ही मुद्दा था (उद्घाटन कोष्ठक को स्ट्रिप बंद कर दिया जाएगा और मान को "20 9 0" के रूप में छोड़ दिया जाएगा "

अंत में, मैं अपने jQuery उदाहरण का उपयोग काम करने के लिए इसे पाने में कामयाब रहे:

$this->getSession()->evaluateScript("jQuery('#edit-og-group-ref-und-0-default').val("(2090)");"); 

और देखा यह काम किया है। धन्यवाद।

संबंधित मुद्दे