2013-12-16 13 views
5

Ich arbeite an einer Lösung für Funktionstest mit Javascript-Unterstützung.Ausführen von Javascript mit behath und phantomjs

Natürlich wählte ich mit Symfony Framework Behath mit Sahi-Treiber, und ich hatte meine Testsuiten grün. Das Problem war, dass sahi ziemlich langsam ist, und nicht stabil genug und deshalb habe ich zu PhantomJS drehen, da diese Blog-Eintrag erwähnt: ->http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

Einige meiner Tests bleiben grün, aber wenn ich $this->getSession()->getDriver()->evaluateScript() verwenden, gibt es keine Rückkehr und ich kann Javascript nicht bewerten.

Wenn jemand jemals beschäftigen und eine Lösung gefunden ...

++

+0

Zum Testen gibt es Beispielprojekt: https://github.com/Shashikant86/BehatDemo – fxlacroix

Antwort

2

Sie nicht das Problem gelöst haben? Versuchen Sie es:

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

bitte Ihre weiteren Fragen zu den Kommentaren hinzufügen, nicht als Antworten –

+0

Ja, sorry, ich habe nicht sorgfältig lesen Sie die Regeln) –

1

In Ihrer Methode können Sie verwenden:

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

In meinem Anwendungsfall wird der Wert des ersten Eingangs-Tag im Code zurück. Wie Sie sehen, können Sie jQuery verwenden, wenn Sie es auf Ihrer Seite haben.

das „Szenario“ muss mit dem Tag läuft @javascript

0

Ich habe versucht, in einem Drupal Textfeld mit dem in Schritt Definition FillField() (dh „Ich fülle in‚Textfeld‘mit“ meinem Wert gebaut zu füllen „) und im Wert I eine öffnende Klammer hatte, die weg bekommen würde Streifen entschied ich mich dann eine benutzerdefinierte Funktion zu schreiben, um den Wert programmatisch anhängen, wie unten dargestellt:.

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

Aber das hatte auch das gleiche Problem (die öffnende Klammer würde abziehen und den Wert als "2090)"

verlassen Schließlich

schaffte ich es an die Arbeit Ihre jquery Beispiel mit:

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

Und voila hat es funktioniert. Vielen Dank.

Verwandte Themen