Не удается нажать на подтверждение в alert()

Добрый день коллеги! Сталкнулся с повседневной проблемой это алерт окна
Вот в чем моя проблема, в том что когда я клинкаю на “delete address” у меня появляется алерт окно (будь это хром или файерфокс) в котром есть подтверждение удаления или отмена. Так вот что я написал:

$I->click('ol > li:nth-of-type(1) > p > a.link-remove');
$I->wait(3);
$I->acceptPopup();
$I->see('The address has been deleted.', 'li.success-msg' );

Что получается: когда происходит клик на удаление, даже не срабатывает

$I->wait(3);

как тест падает с такой ошибкой:

   unexpected alert open
  (Session info: chrome=46.0.2490.71)
 (Driver info: chromedriver=2.19.346078 (6f1f0cde889532d48ce8242342d0b84f94b114a1),platform=Windows NT 5.2     SP2 x86) (WARNING: The server did not provide any stacktrace information)
  Command duration or timeout: 0 milliseconds: null
  Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
  System info: host: '185-44-129-64', ip: '185.44.129.64', os.name: 'windows', os.arch: 'x86', os.version: '5.2', java.version: '1.8.0_40'
  Driver info: org.openqa.selenium.chrome.ChromeDriver
  Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, chrome={userDataDir=C:\Windows\proxy\scoped_dir3344_6323}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=46.0.24
  90.71, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
  Session ID: b1b7786d06269c12c6c0ee7e8f690bc7

Помогите разобраться потому как в мое магазине много алерт окон

Вроде как в Codeception есть тест на это - Codeception/WebDriverTest.php at d6b3a25083c4541d03836c423555e9a15806a79b · Codeception/Codeception · GitHub

С другой стороны, как создается алерт? confirm/alert ? Может быть какая-то своя реализация модального окна одного из миллиона фреймворков? Можете посмотреть в коде?

Алерт создается стандартный JS - alert();

acceptPopup doesn't work when using CodeCoverage · Issue #1485 · Codeception/Codeception · GitHub ?
Запускаете с codecoverage?

Нет, приемочные тесты, какой кодековередж.

Выложите codeception.yml && acceptance.suite.yml ?

Проблема решилась, прописал в свой файл и все заработало спс) за внимание

public function testAcceptPopup() {
$this->module->amOnPage('/form/popup');
$this->module->click('Confirm');
$this->module->acceptPopup();
$this->module->see('Yes', '#result');
}

каким образом решилась проблема? что-то не очень понял. Прописал в свой файл тестовую функцию? ))

    $I->click('//*[@class="actions"]/a');
    $I->acceptPopup();
    $I->moveBack();
    $I->see('The comparison list was cleared.', 'li.success-msg');

А основная проблема заключалось в том, что если в codeception.yml прописан

extensions:
enabled:

  • Codeception\Extension\RunFailed
  • Codeception\Extension\Recorder
    config:
    Codeception\Extension\Recorder:
    delete_successful: true

То в моем случае не срабатывала ф-ция acceptPopup(); а когда отключил начали срабатывать алерт проверки

Проблема в Recorder - он пытается снять скриншот после всплытия алерта, и падает с ошибкой. При отключенном Recorder такой проблемы нет.

2 лайка

Кстати [quote=“Evgenij_Zaczepin, post:10, topic:8467, full:true”]
Проблема в Recorder - он пытается снять скриншот после всплытия алерта, и падает с ошибкой. При отключенном Recorder такой проблемы нет.
[/quote]

Решения так и не появилось?

Вряд ли появится, т.к. появление алерта полностью блокирует работу браузера с вытекающими…

Решение - использовать WinApi из javascript, используюя ActiveX. Получить хэндл окна браузера. Получить хэндлы дочерних окон. Узнать какое дочернее окно является овнером окна браузера. Закрыть это окно.
Вот только я на JS не пишу )

Не, это предложение не из этой оперы, это был вопрос больше к разработчикам Codeception…

Попробуйте в acceptance.suite.yml дописать

modules:
       enabled:
          - WebDriver:
                 url: .....
                 ..........
                 capabilities:
                        unexpectedAlertBehaviour: 'ignore'

Это описано тут - DesiredCapabilities · SeleniumHQ/selenium Wiki · GitHub

Не это не из той оперы, а если следующий шаг подтвердить или отказать алерту, тогда усе шеф фейл!!!
И да, это работает вроде только с ФФ.