Почему я не могу поймать исключение неожиданного оповещения? - PullRequest
0 голосов
/ 16 марта 2019

Я использую блок try catch для перехвата исключения и не могу его перехватить, так как он все еще говорит:

В строке Exception.php 155:

  unexpected alert open: {Alert text : The form is not complete and has not been submitted yet. There is 1 problem with your submission.}
    (Session info: chrome=73.0.3683.75)
    (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-38-generic x86_64)

Мой файл функций:

<?php

use Behat\Behat\Hook\Scope\AfterStepScope;
use Behat\Behat\Tester\Exception\PendingException;
use Behat\Behat\Context\Context;
use Behat\MinkExtension\Context\MinkContext;
use WebDriver\Exception\UnexpectedAlertOpen;
/**
 * Defines application features from the specific context.
 */
class FeatureContext extends MinkContext implements Context
{
    /**
     * Initializes context.
     *
     * Every scenario gets its own context instance.
     * You can also pass arbitrary arguments to the
     * context constructor through behat.yml.
     */
    public function __construct()
    {

    }

    /**
     * @Given I fill in the email field with :email
     */
    public function iFillInTheEmailFieldWith($email)
    {

        dump($email);
        $this->visit('/471w2222');
        $page = $this->getSession()->getPage();
        $page->find('xpath', '//*[@id="tfa_1111"]')->setValue($email);
    }


    /**
     * @When I submit the form
     */
    public function iSubmitTheForm()
    {

        try {
            $page = $this->getSession()->getPage();
            $page->find('xpath', '//*[@id="submit_button"]')->click();
        }
        catch (UnexpectedAlertOpen $e){
            dd($e->getMessage());
            $this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
        }

    }

}

Появляется предупреждение:

$page->find('xpath', '//*[@id="submit_button"]')->click();

выполняет. Но это не может поймать это. Почему?

1 Ответ

1 голос
/ 16 марта 2019

Согласно сообщению об ошибке ...

(Session info: chrome=73.0.3683.75)
(Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-38-generic x86_64)

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

  • Вы используете chromedriver = 2,41
  • Примечания к выпуску chromedriver = 2,41 ясно упоминает следующее:

Поддержка Chrome v67-69

  • Вы используете Chrome = 73,0
  • В примечаниях к выпуску ChromeDriver v2.46 четко упоминается следующее:

Поддержка Chrome v71-73

Таким образом, существует явное несоответствие между ChromeDriver v2.41 и Chrome Browser v73.0

Solution

  • Обновление ChromeDriver до текущей ChromeDriver v2.46 уровень.
  • Сохранить Chrome версия между Chrome v73 уровней.( согласно примечаниям к выпуску ChromeDriver v2.45 )
  • Очистить ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия Web Client устарела, удалите ее и установите последнюю версию GA и выпущенную версию WebКлиент .
  • Выполните перезагрузку системы .
  • Выполните @Test.
  • Всегда вызывайте driver.quit() в методе tearDown(){}закрыть и уничтожить WebDriver и Веб-клиент экземпляров изящно.
...