2013-12-16 16 views
5

Sto lavorando a una soluzione per il test funzionale con supporto javascript.esegue javascript con behat e phantomjs

Naturalmente, utilizzando Symfony Framework, ho scelto Behat con il driver Sahi, e ho avuto le mie suite di test verdi. Il problema era che Sahi è piuttosto lento, e non abbastanza stabile ed è per questo mi rivolgo a PhantomJs come questo post del blog cita: ->http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

Alcuni dei miei test soggiorno verde, ma quando uso $this->getSession()->getDriver()->evaluateScript(), non v'è nessun ritorno e non posso valutare javascript.

Se qualcuno mai affrontare e trovato una soluzione ...

++

+0

Per il test, non c'è progetto di esempio: https://github.com/Shashikant86/BehatDemo – fxlacroix

risposta

2

Non hai risolto il problema? Provalo:

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

si prega di aggiungere le vostre domande nella sezione commenti, non come risposte –

+0

Sì, mi dispiace, non ho leggere attentamente le regole) –

1

Dentro il metodo è possibile utilizzare:

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

Nel mio caso d'uso restituirà il valore del primo tag input nel codice. Come puoi vedere, puoi usare jQuery se ce l'hai nella tua pagina.

"Scenario" deve essere eseguito con il tag @javascript

0

stavo cercando di compilare un campo di testo Drupal utilizzando la funzione integrata nella definizione di fase FillField() (vale a dire "Io riempio in 'campo di testo' con" il mio valore ") e nel valore che ho avuto una parentesi aperta che andrebbe togliere ho quindi deciso di scrivere una funzione personalizzata per aggiungere valore a livello di codice come illustrato di seguito:.

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

Ma questo ha avuto anche lo stesso problema (la la parentesi di apertura verrebbe eliminata e lascerà il valore "2090" "

Infine, sono riuscito a farlo funzionare con il tuo esempio jQuery:

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

E voilà ha funzionato. Grazie.