Тестирование функций (@javascript) не работает - PullRequest
1 голос
/ 18 июня 2019

Я настраиваю простую проверку, когда набираю ключевое слово в поле ввода в браузере, чтобы увидеть результат. И когда проверка начинается в части javascript, проверка выполняется долгое время и заканчивается ошибкой.

Я использую: Linux RedHat 7 Behat 3.5.0 Selenium Автономный Сервер 3.141.59 Норка 1.6

# behat.yml

default: 
  extensions: 
    Behat\MinkExtension: 
      browser_name: chrome
      goutte: ~
      javascript_session: selenium2
      selenium2: 
        wd_host: http://99.80.48.204:4444/wd/hub
        capabilities: { "browser": "chrome", "version": "*", 'chrome': {'switches':['--start-maximized']}}
      base_url: https://www.bing.com
  suites: 
    ui: 
      contexts: [FeatureContext, WebContext]
#Webcontext.php

<?php

use Behat\MinkExtension\Context\MinkContext;

class WebContext extends MinkContext {

     /**
     *@When I wait for :arg1 seconds
     */
    public function iWaitForSeconds($args)
    {
      $this->getSession()->wait($args * 1000);
    }

    /**
     * @When I fill in :arg1 with: :arg2
     */
    public function iFillInWith($value, $field)
    {
      $javascript = "window.onload = function () {var e = document.getElementById('$field').value='$value';}";
      $this->getSession()->executeScript($javascript);
    }

}
# bing.feature

@insulated
Feature: Bing

  Scenario: Homepage
    Given I am on the homepage
    Then  I should see "Bing"
    And I should see "Images"
    And I should see "Office Online"
  @javascript
  Scenario: Search
    Given I am on the homepage
    When I fill in "sb_form_q" with "grafikart" 
    And I wait for 1 seconds
    Then I should see "Grafikart.fr"

Я ожидаю быстрой проверки, и все мои строки зеленые, но в настоящее время это не работает.

Ответы [ 3 ]

1 голос
/ 18 июня 2019

Похоже, что страница не загружена, да и элемент отсутствует на странице.

Попробуйте:
1. дождаться загрузки страницы, используя метод ожидания
->wait(5000, "document.readyState === 'complete'");

дождитесь появления элемента, если необходимо, используя цикл в php, или посмотрите, можете ли вы использовать wait с условием, подобным document.getElementById('$field') != null

В зависимости от ситуации, которая может вам понадобитьсятолько один из них или оба, если вы переходите с другой страницы, второй вы можете включить его в метод заливки.
После завершения ожидания вы можете заполнить поле.

+ изменить свой $javascript метод
document.getElementById('$field').value='$value';

0 голосов
/ 16 июля 2019

После нескольких попыток мне наконец удалось установить связь между беат-селеном и моим веб-драйвером. Моя последняя ошибка такова:

не удалось открыть соединение: неизвестная ошибка: не удается найти ChromeBinary

enter image description here

Однако, когда я запускаю команду Behat, Chromedriver работает через процессы.

Спасибо за аванс

0 голосов
/ 04 июля 2019

наконец я изменил свою конфигурацию селена и Бехата. Теперь связь работает между обоими.

Но когда я запускаю свой тест беат ---> bin / behat Код работает быстрее, чем раньше, но у меня все еще есть ошибка:

 Could not open connection: Error forwarding the new session cannot find : Capabilities {browser: chrome, browserName: chrome, browserVersion: 76.0.3809.12, ignoreZoomSetting: false, javascriptEnabled: true, name: Behat feature suite, platform: LINUX, selenium-version: 3.141.59} (Behat\Mink\Exception\DriverException)

Я ищу много вопросов и ответов, чтобы получить ответ, но у меня нет шансов. Пожалуйста, кто-нибудь может мне помочь?

Спасибо

...