您好我正在尝试自动测试网站的登录页面。我输入了正确的用户名和密码,但程序返回说用户名或密码不正确,当我手动复制并粘贴用户名和密码时,它会让我登录。以下是程序代码:
<?php
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
require_once('vendor/autoload.php');
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
// navigate to 'http://www.seleniumhq.org/'
$driver->get('https:www.abcd.com'); // I had to hide this for security purpose
// adding cookie
$driver->manage()->deleteAllCookies();
$cookie = new Cookie('cookie_name', 'cookie_value');
$driver->manage()->addCookie($cookie);
$cookies = $driver->manage()->getCookies();
print_r($cookies);
$email =$driver->findElement(WebDriverBy::id('textfield-1017-inputEl'));
$email->sendKeys("scott");
$password= $driver->findElement(WebDriverBy::id('textfield-1018-inputEl'));
$password->sendKeys("abcd123") ;
$login = $driver->findElement(WebDriverBy::id('button-1021-btnInnerEl'));
$login->click() ;
// wait at most 10 seconds until at least one result is shown
$driver->wait(10)->until(
WebDriverExpectedCondition::presenceOfAllElementsLocatedBy(
WebDriverBy::className('gsc-result')
)
);
$driver->quit();
?>
答案 0 :(得分:0)
在填充第二个字段之前,您应该等到第一个字段填满。我在非常慢的机器上注意到这一点,其中代码执行比浏览器执行更快。
第一个字段的文本被写入浏览器缓冲区,但不完全写入浏览器控件。然后代码继续执行并将缓冲区目标设置为下一个输入控件。因此,缓冲区的其余部分被错误地写入下一个输入控件。
如果适用,您只需计算任何输入字段的实际字符数,并将其长度与预期长度进行比较。