รันจาวาสคริปต์ด้วย behat และ phantomjs

ฉันกำลังพัฒนาโซลูชันสำหรับการทดสอบการทำงานด้วยการรองรับจาวาสคริปต์

โดยปกติแล้ว เมื่อใช้ Symfony Framework ฉันเลือกไดรเวอร์ Behat with Sahi และชุดทดสอบของฉันเป็นสีเขียว ปัญหาคือ sahi ค่อนข้างช้า และไม่เสถียรเพียงพอ และนั่นคือเหตุผลที่ฉันหันไปหา PhantomJs เนื่องจากโพสต์ในบล็อกนี้กล่าวถึง: -> http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

การทดสอบบางส่วนของฉันยังคงเป็นสีเขียว แต่เมื่อฉันใช้ $this->getSession()->getDriver()->evaluateScript() จะไม่มีการส่งคืน และฉันไม่สามารถประเมินจาวาสคริปต์ได้

หากมีใครเคยจัดการและพบวิธีแก้ปัญหา ...

++


person fxlacroix    schedule 16.12.2013    source แหล่งที่มา
comment
สำหรับการทดสอบ มีโปรเจ็กต์ตัวอย่าง: github.com/Sashikant86/BehatDemo   -  person fxlacroix    schedule 16.12.2013


คำตอบ (3)


คุณยังไม่ได้แก้ไขปัญหาใช่ไหม? ลองมัน:

$this->getSession()->getDriver()->evaluateScript(
    "function(){ return 'some expression'; }()"
);
person Stanislav Butsenko    schedule 20.01.2014
comment
โปรดเพิ่มคำถามเพิ่มเติมของคุณในส่วนความคิดเห็น ไม่ใช่คำตอบ - person Jaak Kütt; 21.01.2014

ภายในวิธีการของคุณคุณสามารถใช้:

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

ในกรณีการใช้งานของฉันจะส่งกลับค่าของแท็กอินพุตแรกในโค้ด อย่างที่คุณเห็น คุณสามารถใช้ jQuery ได้หากมีอยู่ในเพจของคุณ

"สถานการณ์" จะต้องทำงานด้วยแท็ก @javascript

person Manuel K.    schedule 03.12.2014

ฉันกำลังพยายามกรอกข้อมูลในฟิลด์ข้อความ 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)");"); 

และมันก็ได้ผล ขอบคุณ.

person oli-chowdhury    schedule 23.05.2016