Добрый вечер, сообщество. Я хотел бы получить комментарии или помощь о том, как автоматизировать приложение REACT со спокойствием BDD и сценарием. В основном, проблема у меня заключается в следующем: у меня есть форма регистрации, разделенная на этапы, в соответствии с этапом, на котором отображается представление, например, на этапе 1 вы вводите почту и подтверждение, на следующем этапе вы вводите имена и фамилии и т.д. до тех пор, пока вы не завершите sh регистрацию.
Как я делаю процесс: была сгенерирована задача, которая содержит все шаги реестра, это работает очень хорошо, если все шаги выполняются в одной задаче , но когда я хочу отделить каждый шаг в новой реализации, при выполнении процесса первый шаг (подтверждение и почта) выполняется нормально, но следующее (имена и фамилии) не может найти элементы, процесс ищет идентификаторы электронной почты и пароля.
Я предполагаю, что это из-за виртуального DOM, который обрабатывает REACT. Я все еще не могу найти ответ, как обработать текущий контекст и заставить процесс найти текущие элементы в DOM.
@Step("{0} fill the what's your name step")
@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(
Refresh.theBrowserSession(),
JavaScriptClick.on(TXT_FIRST_NAME),
Click.on(TXT_FIRST_NAME),
Enter.theValue(firstName).into(TXT_FIRST_NAME),
Click.on(TXT_LAST_NAME),
Enter.theValue(lastName).into(TXT_LAST_NAME),
Click.on(BTN_CONTINUE_NAME),
Click.on(TXT_BIRTHDAY),
Enter.theValue("06/08/1989").into(TXT_BIRTHDAY),
Click.on(BTN_CONTINUE_BIRTHDAY),
Click.on(RADIO_GENDER),
Click.on(BTN_CONTINUE_GENDER)
);
}
Ссылка в классе определения шага.
@And("^I fill the (.*) and confirmation email step$")
public void iFillTheEmailAndConfirmationEmailStep(String email) {
email = faker.internet().emailAddress();
theActorInTheSpotlight().attemptsTo(Registration.with(email));
String saveEmail = String.valueOf(TXT_EMAIL.resolveFor(theActorInTheSpotlight()).getText());
theActorInTheSpotlight().remember("email", saveEmail);
String emailConfirmation = theActorInTheSpotlight().recall("email");
theActorInTheSpotlight().attemptsTo(Registration.with(emailConfirmation));
}
@And("^I fill the step whats your name with (.*) and (.*)$")
public void iFillTheStepWhatsYourNameWithFirstNameAndLastName(String firstName, String lastName) {
firstName = faker.name().firstName();
lastName = faker.name().lastName();
theActorInTheSpotlight().attemptsTo(EnterText.name(firstName, lastName));
}
Это ошибка, которую выдает консоль
[Test worker] ERROR net.thucydides.core.steps.ConsoleLoggingListener - TEST FAILED AT STEP And I fill the email and confirmation email step
[Test worker] ERROR net.thucydides.core.steps.ConsoleLoggingListener - no such element: Unable to locate element: {"method":"css selector","selector":"*[name='email']"}
no such element: Unable to locate element: {"method":"css selector","selector":"*[name='email']"}
(Session info: chrome=80.0.3987.122)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html