javascript — executeScript — ввести подсказку и вернуть значение — не удалось найти поле значения

Я пытаюсь проверить форму входа в систему с селеном, где пользователи должны ввести 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();

1

Решение

это кажется проблемой в Geckodriver, реализации Selenium в Firefox — см. https://github.com/mozilla/geckodriver/issues/431.

В настоящее время вы можете попробовать либо:

  • последний Firefox (ночная версия), где проблема может быть исправленным,
  • или используйте Firefox 47.0.1 (или Firefox ESR версия) вместе с сервером Selenium 2.53.1,
  • или используйте другой браузер, например, Chrome и Chromedriver.
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector