使用Selenium Webdriver提供登录详细信息,即使其正确也不正确

时间:2018-05-16 06:16:27

标签: selenium webdriver automated-tests

您好我正在尝试自动测试网站的登录页面。我输入了正确的用户名和密码,但程序返回说用户名或密码不正确,当我手动复制并粘贴用户名和密码时,它会让我登录。以下是程序代码:

<?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();

?>

1 个答案:

答案 0 :(得分:0)

在填充第二个字段之前,您应该等到第一个字段填满。我在非常慢的机器上注意到这一点,其中代码执行比浏览器执行更快。

第一个字段的文本被写入浏览器缓冲区,但不完全写入浏览器控件。然后代码继续执行并将缓冲区目标设置为下一个输入控件。因此,缓冲区的其余部分被错误地写入下一个输入控件。

如果适用,您只需计算任何输入字段的实际字符数,并将其长度与预期长度进行比较。