清除密码元素不适用于selenium webdriver

时间:2016-10-14 06:30:18

标签: javascript selenium-webdriver

我正在使用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();
      });
    });
  });

1 个答案:

答案 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,那么我们就会知道密码字段未被清除的原因。