выполнить javascript с behat и phantomjs

Я работаю над решением для функционального теста с поддержкой javascript.

Естественно, используя Symfony Framework, я выбрал Behat с драйвером Sahi, и у меня были зеленые наборы тестов. Проблема заключалась в том, что сахи довольно медленный и недостаточно стабильный, поэтому я обращаюсь к PhantomJs, как упоминается в этом сообщении в блоге: -> http://shashikantjagtap.net/running-behat-scenarios-with-pahntomjs/

Некоторые из моих тестов остаются зелеными, но когда я использую $this->getSession()->getDriver()->evaluateScript(), возврата нет, и я не могу оценить javascript.

Если кто-то когда-нибудь имел дело и нашел решение...

++


person fxlacroix    schedule 16.12.2013    source источник
comment
Для тестирования есть пример проекта: github.com/Shashikant86/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