这里的情况是尝试测试登录功能。当我尝试将key发送到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();
}
我认为由于节点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);