jalankan javascript dengan behat dan phantomjs

Saya sedang mengerjakan solusi untuk uji fungsional dengan dukungan javascript.

Tentu saja, dengan menggunakan Symfony Framework, saya memilih Behat dengan driver Sahi, dan rangkaian pengujian saya berwarna hijau. Masalahnya adalah sahi cukup lambat, dan tidak cukup stabil dan itulah sebabnya saya beralih ke PhantomJs seperti yang disebutkan dalam postingan blog ini: -> http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

Beberapa pengujian saya tetap hijau, tetapi ketika saya menggunakan $this->getSession()->getDriver()->evaluateScript(), tidak ada pengembalian dan saya tidak dapat mengevaluasi javascript.

Jika seseorang pernah menangani dan menemukan solusi ...

++


person fxlacroix    schedule 16.12.2013    source sumber
comment
Untuk pengujian, ada contoh proyek: github.com/Shashikant86/BehatDemo   -  person fxlacroix    schedule 16.12.2013


Jawaban (3)


Anda belum menyelesaikan masalahnya? Cobalah:

$this->getSession()->getDriver()->evaluateScript(
    "function(){ return 'some expression'; }()"
);
person Stanislav Butsenko    schedule 20.01.2014
comment
silakan tambahkan pertanyaan tambahan Anda di bagian komentar, bukan sebagai jawaban - person Jaak Kütt; 21.01.2014

Di dalam metode Anda, Anda dapat menggunakan:

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

Dalam kasus penggunaan saya akan mengembalikan nilai tag masukan pertama dalam kode. Seperti yang Anda lihat, Anda dapat menggunakan jQuery jika Anda memilikinya di halaman Anda.

"Skenario" harus dijalankan dengan tag @javascript

person Manuel K.    schedule 03.12.2014

Saya mencoba mengisi bidang teks Drupal menggunakan definisi langkah bawaan fillField() (yaitu "Saya mengisi" bidang teks "dengan" nilai saya ") dan dalam nilai saya memiliki tanda kurung buka yang akan dihapus. Saya kemudian memutuskan untuk menulis fungsi khusus untuk menambahkan nilai secara terprogram seperti yang ditunjukkan di bawah ini:

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

Tapi ini juga memiliki masalah yang sama (tanda kurung pembuka akan dihilangkan dan meninggalkan nilainya sebagai "2090)"

Akhirnya, saya berhasil membuatnya berfungsi menggunakan contoh jquery Anda:

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

Dan voila, itu berhasil. Terima kasih.

person oli-chowdhury    schedule 23.05.2016