我正在检查与Selenium webdriver登录表单的验证。使用clear不会清除密码字段。类似的代码用于用户名字段。我错过什么了吗?
it('Password is required', function(done) {
usernameElem.clear();
// skipping the test because clearing password field does not work!
passwordElem.clear();
loginElem.click();
driver.findElements(By.className('text-danger')).then(elements => {
elements.length.should.equal(2);
elements[1].getText().then(text => {
text.should.equal('Password is required.');
done();
});
});
});
我假设我们没有得到任何异常的行:
passwordElem.clear();
这应该不是必需的,但您可以首先单击密码字段(因此它将获得焦点),然后清除它。
passwordElem.click();
passwordElem.clear();
您可以在尝试清除密码字段之前设置休眠。
Thread.sleep(3000); // Wait for 3 seconds
您可以使用显式等待来确保密码字段准备好,然后再尝试清除它。
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(passwordElem)).clear();
您可以确认一次密码字段已启用并按照网页的源代码显示:
System.out.println("Password field is enabled: " + passwordElem.isEnabled());
System.out.println("Password field is displayed: " + passwordElem.isDisplayed());
如果上述任何语句为false,则我们将知道密码字段未被清除的原因。