Использование SpecFlow, Selenium и FluentAutomation вызывает проблемы
В настоящее время я использую Specflow с Selenium и FluentAutomation и сталкиваюсь со значительными проблемами с поддержанием состояния между этапами в Specflow.
Смотрите мой пример кода ниже:
[Binding]
public class RegistrationSteps : FluentTest
{
[Given(@"I create an account")]
public void GivenICreateAnAccount()
{
new HomePage(this)
.Go()
.StartRegistration()
.EnterDetailsAndClickSubmit(); // takes me to deposit page
}
[When(@"Deposit '(.*)' dollars in my account")]
public void GivenDepositMoneyInMyAccount(int amount)
{
new DepositPage(this)
.EnterDetailsAndClickSubmit(amount);
}
}
Моя проблема:
- На первом этапе страница загружается с помощью
Go()
и все происходит нормально - На втором этапе мои тесты продолжаются, здесь я ожидаю, что я нахожусь на другой странице, основанной на Подтверждении в предыдущем
- Потому что я не по другому
PageObject
это запутывается, я не используюGo
потому что предыдущий шаг должен был привести меня сюда, и на этом этапе он не найдет ожидаемые элементы
Итак, мой вопрос, как я могу использовать один сеанс браузера и несколько PageObjects для нескольких тестов Specflow?
1 ответ
Согласно документу FluentAutomation, вы должны сделать что-то вроде этого:
[Binding]
public class RegistrationSteps : FluentTest
{
private PageObject _currentPage;
[Given(@"I create an account")]
public void GivenICreateAnAccount()
{
_currentPage = new HomePage(this)
.Go()
.StartRegistration()
.EnterDetailsAndClickSubmit(); // takes me to deposit page
}
[When(@"Deposit '(.*)' dollars in my account")]
public void GivenDepositMoneyInMyAccount(int amount)
{
_currentPage = _currentPage
.EnterDetailsAndClickSubmit(amount);
}
}
При условии, что вы возвращаете объект страницы, на который переключен метод EnterDetailsAndClickSubmit вашего конкретного объекта страницы, например:
Public PageObject EnterDetailsAndClickSubmit() {
// [.. enter details here and click submit ..]
return this.Switch();
}