Я пытаюсь проверить форму входа в систему с помощью селена, где пользователи должны ввести SMS-код в форму для проверки. Я использую facebook/php-webdriver Therefor я впрыснуть следующий JavaScript в сайте:executeScript - ввести приглашение и вернуть значение - Не удалось найти поле значения
return prompt('Please enter the SMS verification code.', '');
Это, как я пытаюсь поймать значение подсказки:
$smsCode = $this->driver->executeScript("return prompt('Please enter the SMS verification code.', '');");
Согласно documentation, 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();
Я не получил, как вы можете получить код с помощью этого '$ smsCode = $ this-> driver-> executeScript (« return prompt («Введите код подтверждения SMS»., ''); ");' Это просто открытие всплывающего окна «alert» на browswer, и он не возвращает код sms. –
Он не запускает 'alert', он запускает' приглашение' и возвращает пользовательский ввод, который затем будет доступен в '$ smsCode' – Black
. Я имел в виду, почему вы не входите непосредственно в smscode в' login_field', а не получаете это по подсказке. В любом случае вы должны создать smscode вручную? как вы производите smscode? –