我正在使用Selenium webdriver检查登录表单上的验证。密码字段未清除清除。类似的代码适用于用户名字段。我错过了什么吗?
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();
});
});
});
答案 0 :(得分:1)
我假设我们没有得到该行的任何例外:
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,那么我们就会知道密码字段未被清除的原因。