0

嗨,我想测试密码字段是否掩盖了密码字段中输入的字符串。我如何通过 webdriver 对其进行测试。我尝试过以下事情:

package unitTest.JUnitTestCases;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PasswordTest 
{
    @Test
    public void test()
    {
        WebDriver driver=new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/form/adv-vtypes.html");
        WebElement username=driver.findElement(By.id("textfield-1014-inputEl"));
        username.sendKeys("admin");
        System.out.println(username.getText());
        WebElement password=driver.findElement(By.id("textfield-1015-inputEl"));
        password.sendKeys("admin");
        System.out.println(password.getAttribute("textContent"));
        //WebElement login=driver.findElement(By.id("login"));
    }
}

在这里,我在密码字段中输入一些值并尝试获取在该字段中输入的文本,以便我检查它是否被屏蔽。蒂亚!!

4

1 回答 1

2

我不知道是否有办法做到这一点,但我对此表示怀疑。因为这对我来说是浏览器级别的事情,这意味着浏览器应该处理<input type="password">.

一种解决方案是使用某种屏幕截图比较工具。

另一种解决方案是检查输入是否具有属性type="password",如果有,则可以假设您的站点已正确生成,但这并不意味着浏览器可以正确处理它。

System.out.println(password.getAttribute("type").equals("password"));

请注意,password.getAttribute("value")无论如何都会得到您输入的字符。(就像我说的,密码屏蔽是浏览器的能力,文本将作为值存在,浏览器对用户隐藏它)

旁注:不要By.id("textfield-1014-inputEl")用于 ExtJS。尝试使用有意义的类名,例如By.cssSelector(.x-form-type-password:nth-of-type(1) input[type="password"]).

于 2013-08-20T10:55:48.957 回答