清除密码元素对selenium webdriver不起作用



我正在检查与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,则我们将知道密码字段未被清除的原因。

最新更新