Я пытаюсь проверить форму входа в систему с селеном, где пользователи должны ввести SMS-код в форму для проверки. Я использую facebook / PHP-WebDriver Для этого я добавляю на сайт следующий javascript:
return prompt('Please enter the SMS verification code.', '');
Вот как я пытаюсь поймать значение подсказки:
$smsCode = $this->driver->executeScript("return prompt('Please enter the SMS verification code.', '');");
Согласно документация, executeScript
возвращает возвращаемое значение скрипта.
Теперь после этого я хочу отправить этот код в поле ввода:
$SMSInput->sendKeys($smsCode);
$passwordInput->sendKeys(self::PASSWORD)->submit();
Тем не менее, я получаю эту ошибку UnknownServerException in WebDriverException.php line 114:
Failed to find value field
Я также пытался использовать executeAsyncScript
,
Я использую последнюю версию Selenium Server V 3.0.1.
Весь тестовый скрипт для воспроизведения:
Заметка: Первая установка facebook / PHP-WebDriver, прочитайте инструкции по установке на странице github.
Затем запишите следующий код php в файл .php (например, index.php) и вызовите URL, например, локальный / селен / index.php
<?php
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverBy;
require("vendor/autoload.php");
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::firefox(), 5000);
$driver->get('https://github.com/login');
$usernameInput = $driver->findElement(
WebDriverBy::id('login_field')
);
$passwordInput = $driver->findElement(
WebDriverBy::id('password')
);
$smsCode = $driver->executeScript("return prompt('Please enter the SMS verification code.', '');");
$usernameInput->sendKeys($smsCode);
$passwordInput->sendKeys('1234')->submit();
это кажется проблемой в Geckodriver, реализации Selenium в Firefox — см. https://github.com/mozilla/geckodriver/issues/431.
В настоящее время вы можете попробовать либо:
Других решений пока нет …