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);
这里的情况是尝试测试登录功能。当我尝试将密钥发送到 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);