我尝试使用selenium测试登录表单,用户必须在表单中输入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.', '');");
根据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();
答案 0 :(得分:2)
这似乎是Geckodriver中的一个问题,即Firefox中的Selenium实现 - 请参阅https://github.com/mozilla/geckodriver/issues/431。
暂时你可以尝试: