Я пытаюсь сделать тест на селен для весенней безопасности, и я последовал многим примерам без удачи, я всегда заканчиваю с ошибкой входа:
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>
Может кто-нибудь сказать мне, пожалуйста, почему я всегда получаю ошибку входа в систему?
это моя форма входа:
<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 : когда я заменил кнопку, нажмите навведите нажмите, он работает хорошо, я не знаю, почему
СТАРЫЙ :
WebElement loginBtn = driver.findElement(By.id("loginBtn"));
loginBtn.click();
NEW :
passwordField.sendKeys(Keys.ENTER);