Node JS:Selenium-Webdriver sendKeys 到字段,插入的值不正确

Node JS: Selenium-Webdriver sendKeys to the fields, the inserted value not right

这里的情况是尝试测试登录功能。当我尝试将密钥发送到 userId 和密码字段时(检查下面的代码)。有时密码的键转到用户名 field.sometimes loginBtn 完成执行并且 userId 和密码字段尚未插入 keys.Below 是我的代码:

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

}

我觉得是因为node js是非阻塞运行的,并不是一直一行行执行的。有办法解决这个问题吗?先谢谢了! enter image description here

我们可以使用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);