WebElement.click () не отправляет форму - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь сделать тест на селен для весенней безопасности, и я последовал многим примерам без удачи, я всегда заканчиваю с ошибкой входа:

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);

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Вы пытались нажать на кнопку вместо passwordfield.submit()?

WebElement loginBtn = driver.findElement(By
            .id("loginBtn"));
loginBtn.click();
1 голос
/ 18 января 2012

Заменить имя на 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"); 
...