硒测试用例无法通过Ajax

时间:2020-08-28 13:03:07

标签: java selenium jsp selenium-webdriver ajaxform

我有一个简单的登录页面,该页面是使用AJAX提交的。表单操作为“登录”。 登录的servlet映射如下:

<servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>devops.ilp1.controllerWithoutDb.UserLoginController</servlet-class>
</servlet>

UserLoginController类发送在登录页面上显示的响应错误。如果errors =“”,则表明用户已登录。然后,该用户被重定向到例如localhost:xxxx / Home 手动工作正常。 当我使用Selenium进行相同的操作时,单击“提交”按钮后,页面导航到localhost:xxxx / Login,并且测试用例失败。

HTML:

<form id="someform" action=Login method="post">
  <input type="text"  class="fadeIn first" name="email" placeholder="Enter Email">
  <input type="password"  class="fadeIn second" name="password" placeholder="Enter Password">
  <button class="fadeIn third" type="submit">Login</button>
</form>
<script>  
$(document).on("submit", "#someform", function(event) {
    var $form = $(this); 
    $.post($form.attr("action"), $form.serialize(), function(response) {
        if(response){
           $('#someMsg').text(response).show().delay(2500).fadeOut("slow");
        }else{
           document.location = "Home"; 
        }
    });
    event.preventDefault(); 
});

硒测试用例:

public void loginSuccess() {
    driver.get("http://localhost:6080/ILP_Bookstore");
    WebElement email = driver.findElement(By.name("email"));
    WebElement pass = driver.findElement(By.name("password"));
    WebElement button = driver.findElement(By.xpath("/html/body/div[1]/div/form/button"));         
    email.sendKeys("govind@yahoo.com");
    pass.sendKeys("govind");
    WebDriverWait wait = new WebDriverWait(driver, 5);     
    wait.until(ExpectedConditions.visibilityOf(button));
    button.click();
    assertTrue(driver.getTitle().equals("HomePage"));
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

这3个解决方案中的任何一个都可以轻松工作:

解决方案1: 使用动作类单击 act.click()

解决方案2: 使用动作类将鼠标移到元素上,然后单击 act.movetoElement(button).click()

解决方案3: 您可以尝试使用JavaScriptExecutor

答案 1 :(得分:0)

问题出在Firefox WebDriver。它似乎没有加载JQuery脚本。 我改用Chrome,它可以正常工作。