Узел JS: Selenium-Webdriver sendKeys для полей, вставленное значение не верно - PullRequest
0 голосов
/ 14 сентября 2018

Ситуация здесь, попробуйте проверить функцию входа в систему.Когда я попытался отправить ключи в поле userId и пароль (проверьте код ниже).Иногда ключи для пароля идут в поле username. Иногда loginBtn завершает выполнение, и поля userId и password не вставляются с ключами. Ниже приведен мой код:

var webdriver = require("selenium-webdriver");
var test = require("selenium-webdriver/testing");
var assert = require("assert");
var By = require("selenium-webdriver").By;

var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();

testAfterLogin();
function testAfterLogin() {

    driver.get("https://xxxxx.com");
 
    var userid = driver.findElement(By.id('xxxxyyy'));
    userid.clear();
    userid.sendKeys("userId");

    var password = driver.findElement(By.id('yyyyzzzz'), 2000);
    password.clear();
    password.sendKeys("password");  


    var loginBtn = driver.findElement(By.className("btnBtn"));
    loginBtn.click(); 

}

Я думаю, что из-за того, что узел js работает без блокировки, он не всегда выполняется построчно.Есть ли способ решить эту проблему?Спасибо, впереди! введите описание изображения здесь

1 Ответ

0 голосов
/ 18 сентября 2018

Мы можем использовать webdriver.until.elementLocated (locator) , чтобы решить эту проблему. Ниже приведен пример кода.

var userId = driver.wait(until.elementLocated(By.id('UserID')))
userId.sendKeys("test");

var pwd = driver.wait(until.elementLocated(By.id('Password')))
pwd.sendKeys("123456");
  
 
var loginBtn = driver.wait(until.elementLocated(By.className('btn-login')))
loginBtn.sendKeys(webdriver.Key.ENTER);
...