我正在尝试对春季安全进行硒测试,我跟着许多例子没有运气,我总是以登录失败告终:
public class LoginTest {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://localhost:8080";
}
@Test
public void testLoginClass() throws Exception {
driver.get(baseUrl + "/MyAPP/login");
final WebElement usernameField = driver.findElement(By
.id("j_username"));
usernameField.sendKeys("1");
final WebElement passwordField = driver.findElement(By
.id("j_password"));
passwordField.sendKeys("123456");
passwordField.submit();
System.out.println("##################### URL: "
+ driver.getCurrentUrl());
Assert.assertNotNull(driver.findElement(By.className("welcomeHome")));
}
@After
public void tearDown() throws Exception {
driver.close();
}
}
问题:我确定输入的用户名和密码匹配,我可以在loginFailureHandler中打印它们,我发现它们是正确的(在编码之前,它们是否应该在loginFailure中编码?)
无论如何,我正在使用SHA编码:<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="sha"/>
</authentication-provider>
</authentication-manager>
任何人都可以告诉我为什么我alwyas登录失败?
这是我的登录表单:
<form action="#{request.contextPath}/j_spring_security_check" method="post">
<h:inputText id="j_username" />
<h:inputSecret id="j_password" />
<h:commandButton id="loginBtn" />
</form>
更新:点击按钮,登录成功,但不将用户转发到主页,他仍然在登录页面,driver.getCurrentUrl()
将打印登录
WebElement loginBtn = driver.findElement(By
.id("loginBtn"));
loginBtn.click();
UPDATE2 :我尝试在登录后将用户转发到主页,也没有运气,用户仍然在登录页面。
WebElement loginBtn = driver.findElement(By.id("loginBtn"));
loginBtn.click();
driver.get(baseUrl + "/MyAPP/home");
UPDATE3 :当我更换按钮时点击进入点击,它工作正常我不知道为什么
OLD :
WebElement loginBtn = driver.findElement(By.id("loginBtn"));
loginBtn.click();
新:
passwordField.sendKeys(Keys.ENTER);
答案 0 :(得分:3)
您是否曾尝试点击按钮而不是passwordfield.submit()
?
WebElement loginBtn = driver.findElement(By
.id("loginBtn"));
loginBtn.click();
答案 1 :(得分:1)
按ID
替换名称使用以下片段:
final WebElement usernameField = driver.findElement(By.id("j_username")); usernameField.sendKeys("1");
final WebElement passwordField = driver.findElement(By.id("j_password")); passwordField.sendKeys("123456");