我为登录页做了一个成功的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现在就成功了。
答案 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());
}