#java #selenium #jsp #selenium-webdriver #ajaxform
#java #selenium #jsp #selenium-webdriver #ajaxform
Вопрос:
У меня есть простая страница входа в систему, которая отправляется с помощью AJAX. Действие формы — «Вход». Отображение сервлета для входа в систему выглядит следующим образом:
<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();
});
Тестовый пример Selenium:
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"));
}
кто-нибудь может помочь?
Комментарии:
1. Вы пробовали подождать после button.click()? прежде чем вы сможете выполнить утверждение для заголовка домашней страницы.
2. да, я тоже пробовал это, но это тоже не сработало,
Ответ №1:
Любое из этих 3 решений может работать легко:
Решение 1: Используйте класс actions, чтобы щелкнуть act.click()
Решение 2: Используйте класс actions, чтобы навести курсор мыши на элемент и нажать act.moveToElement(кнопка).click()
Решение 3: вы можете попробовать использовать JavascriptExecutor
Комментарии:
1. я попытался использовать класс action. это не сработало. Все еще переходим на localhost: xxxx / Login
Ответ №2:
Проблема была с Firefox webdriver. Похоже, что скрипт jQuery не загружался. Я перешел на Chrome, и это сработало.