Использование Selenium Webdriver дает неверные данные для входа, даже если они правильные - PullRequest
0 голосов
/ 16 мая 2018

Привет. Я пытаюсь провести автоматическое тестирование на странице входа для веб-сайта. Я ввел правильное имя пользователя и пароль, но программа вернулась обратно, сообщив, что имя пользователя или пароль неверны. Хотя я копирую и вставляю имя пользователя и пароль вручную, он регистрирует меня. Ниже приведен код программы:

<?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 голосов
/ 18 мая 2018

Вам следует подождать, пока первое поле не будет заполнено, прежде чем заполнять второе поле.Я заметил это на очень медленных машинах, где выполнение кода выполняется быстрее, чем выполнение в браузере.

Текст первого поля записывается в буфер браузера, но не полностью записывается в управление браузером.Затем выполнение кода продолжается и устанавливает целевой буфер для следующего элемента управления вводом.Таким образом, остаток буфера ошибочно записывается в следующий элемент управления вводом.

Если это применимо, вам нужно только подсчитать действительные символы любого из ваших полей ввода и сравнить его длину с ожидаемой длиной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...