#php #selenium #selenium-chromedriver #behat #mink
#php #selenium #selenium-chromedriver #behat #mink
Вопрос:
Я использую блок 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 BehatBehatHookScopeAfterStepScope;
use BehatBehatTesterExceptionPendingException;
use BehatBehatContextContext;
use BehatMinkExtensionContextMinkContext;
use WebDriverExceptionUnexpectedAlertOpen;
/**
* 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. Возможно, вам нужно подождать, подождите 2-5 секунд для предупреждения используйте объекты страницы для очистки кода.
Ответ №1:
Согласно сообщению об ошибке…
(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 версии 73.0
Решение
- Обновите ChromeDriver до текущего уровня ChromeDriver версии v2.46.
- Сохраняйте версию Chrome между уровнями Chrome v73. (согласно примечаниям к выпуску ChromeDriver версии v2.45)
- Очистите рабочее пространство вашего проекта с помощью вашей IDE и перестройте свой проект только с необходимыми зависимостями.
- Если ваша базовая версия веб-клиента слишком старая, удалите ее и установите последнюю GA и выпущенную версию веб-клиента.
- Выполните перезагрузку системы.
- Выполните ваше
@Test
. - Всегда вызывайте метод
driver.quit()
внутриtearDown(){}
, чтобы корректно закрыть и уничтожить экземпляры WebDriver и Web Client.
Комментарии:
1. Хорошие моменты, однако проблема заключается в исключениях. Я обновился, но все та же ошибка.