如何在selenium测试用例中声明登录成功?

时间:2012-01-17 15:37:13

标签: java-ee selenium continuous-integration integration-testing

我为登录页做了一个成功的selenium测试用例,用户输入了正确的用户名和密码然后点击登录转发到主页,问题是当我在测试类中更改密码时,测试总是成功,我不知道为什么。

这是测试类:

public class LoginTest extends TestCase {

    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "http://localhost:8080";
    }

    @Test
    public void testLoginClass() throws Exception {
        driver.get(baseUrl + "/MyAPP/login");
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

        driver.findElement(By.id("j_username")).clear();
        driver.findElement(By.id("j_username")).sendKeys("1");
        driver.findElement(By.id("j_password")).clear();
        driver.findElement(By.id("j_password")).sendKeys("wrong password");
        driver.findElement(By.id("loginBtn")).click();

    }

    @After
    public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
        }
    }

    @SuppressWarnings("unused")
    private boolean isElementPresent(By by) {
        try {
            driver.findElement(by);
            return true;
        } catch (NoSuchElementException e) {
            return false;
        }
    }

}

请告知如何处理测试用例的失败,假设在某个时候数据库被更改并且没有这样的用户1现在就成功了。

3 个答案:

答案 0 :(得分:8)

您没有检查是否有错误的密码让用户登录。

如果出现某些特定文本,您需要在登录后设置一个测试用例进行检查。

例如,如果用户成功登录,欢迎屏幕将显示“Hi UserName”。因此,如果您的硒脚本点击assert

后文字存在,则需要loginBtn

目前您所做的只是发送“ some ”文本作为密码,selenium显然不知道密码是否不正确,除非您验证输入错误密码的结果。

修改


RUBY中的代码段 -

assert(@driver.find_element(:tag_name => "body").text.include?("Welcome UserName"),"The User successfully logs in")

答案 1 :(得分:0)

为了验证您的方案,您的应用程序应显示一条消息,例如"输入的密码无效。"

然后在登录按钮单击后尝试此操作。

try {
    assertEquals(driver.findElement(By.id("Your Id for the message")).getText(), "Invalid UserID or Password Entered");

    //If the message is displayed

    System.out.println("PASS");

} catch (Exception e) {

    //If the message is not displayed

    System.out.println("FAIL");

    verificationErrors.append(e.toString());

}

答案 2 :(得分:0)

try {
    assertEquals(driver.findElement(By.id("Your Id for the message")).getText(), "Invalid UserID or Password Entered");

    //If the message is displayed

    System.out.println("PASS");

} catch (Exception e) {

    //If the message is not displayed

    System.out.println("FAIL");

    verificationErrors.append(e.toString());

}