public void testNForm(WebElement one, WebElement two, WebElement button, WebElement acceptInf){
setElementText(one);
sendAndAssertNegativeTest(button, acceptInf);
one.clear();
setElementText(one);
setElementText(two);
sendAndAssertNegativeTest(button, acceptInf);
}
public void sendAndAssertNegativeTest(WebElement button, WebElement acceptInf) {
wait.until(ExpectedConditions.elementToBeClickable(button));
for(int i=1; i<5; i++) {
clickOnElement(button);
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println();
Assert.assertTrue(!acceptInf.isDisplayed(), "\n" + "Negative test # " + countNF + " is failed - form sent");
System.out.println("Negative test # " + countNF + " is passed");
countNF++;
}
public void sendAndAssertNegativeTest(WebElement button, String acceptInf) {
wait.until(ExpectedConditions.elementToBeClickable(button));
for(int i=1; i<5; i++) {
clickOnElement(button);
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println();
Assert.assertNotEquals(driver.getCurrentUrl(),acceptInf, "\n" + "Negative test # " + countNF + " is failed - form sent");
System.out.println("Negative test # " + countNF + " is passed");
countNF++;
}
Нужно перегрузить метод testNForm так , чтоб он вместо последнего аргумента WebElement acceptInf принимал на себя String с таким же названием. При условии что будет стринг должен вызываться второй метод , с проверкой url .
Можно сделать простой копипастой но это не правильно я считаю
Хорошо , давайте допустим что мне нужно написать подобные методы , только для других форм (3,4,5… полей для ввода) . С каждым дополнительным полем метод нужно дополнять к предыдущему + дублировать в случае , если последний аргумент это String
Принцип такой :
Класс negative testing расширяет базовый класс (в котором прописаны все рутинные экшены)
В классе negative testing реализованы методы для негативного тестирования форм с разным количеством полей.
После отправки сообщения может быть два варианта - либо выпадает поп-ап об успешной отправке , либо нас перебрасывает на другую страницу с сообщением.
Для этих двух случаев реализовано два метода sendAndAssertNegativeTest - в первом методе мы проверяем , не выпал ли нам поп ап (последний аргумент WebElement) , в втором методе мы проверяем , не поменялась ли ссылка после отправки (Последний аргумент String).
Дело в том , что мне нужно расписать методы testNForm, с наименьшим количеством копипасты.
Как это можно реализовать ?
Нууу, пускай тогда метод всегда проверяет УРЛ. Или всегда проверяет веб-элемент (наличие или отстутсвие). Зачем делать один метод, который будет делать все подряд. Или можно переписать методы, и более крупные методы отвечающие за проверки, будут использовать функцональность более мелких. Может методы, которые будут иметь меньшую функциональность стоит сделать приватными. Что если пойти с этой стороны?
Нет , только одно чтото проверять не вариант , т.к. если поп-ап - урл не меняется , если переход на новую страницу - не видно нужного сообещния в доме , следственно NoSuchElementExсeption
Но ведь результат ожидаем заранее. Результат будет получен исходя из введенных данных. Или мы вводим данные, а результат хз какой и мы хотим проверить все возможные варианты?
всегда есть способ не применять слип, только это конечно будет больше кода, иногда намного больше )
наследование плохо т.к. создается жесткая связь тест - страница, в этом случае лучше например аггрегация
[quote=“Vladyslav_Stuparenko, post:15, topic:8039, full:true”]
Мы заполняем данные (наполовину/некорректные) и пытаемся их отправить , а потом ожидаем , не пришло ли нам подтверждение
[/quote] проблема в том, что мы пытаемся сделать один метод, который будет проверять два варианта: успех и неудачу. Но мы можем перед выполнением теста предсказать желаемый результат. То есть если мы введем некорректные данные в поля, то мы ожидаем увидеть сообщение об ошибке (или что-то там еще).
Проблема в том, что мы хотим метод, который отвечает за слишком много вещей.