首页 > 解决方案 > 在 Specflow 中创建页面对象实例

问题描述

我一直在努力解决我的问题,我决定寻求帮助。所以我正在编写我的 GitHub 存储库,以便将其放入我的简历中。问题是我决定将 BDD 与 Selenium 一起使用,但我不知道如何在步骤定义期间停止重复自己。当我在面向页面对象的模型中创建代码时,我不断重复自己在每一步中创建对象的实例。我发现我可以使用类似 ScenarioContext.Current 的东西,但老实说,我一定是用错了,因为它看起来不像我想的那么好。我希望关于如何使我的代码更好的一些建议。这是一个示例:

using TechTalk.SpecFlow;

namespace SampleAutomationTests.StepDefinitions
{
    [Binding]
    public sealed class AuthenticationFeatureSteps
    {
        [Given(@"I opened the home page")]
        public void GivenIOpenedTheHomePage()
        {
            HomePage page = new HomePage(Hooks.Driver);
            ScenarioContext.Current["Home Page"] = page;
            page.GoTo();
        }

        [Given(@"I navigated to Basic Auth link")]
        public void GivenINavigatedToBasicAuthLink()
        {
            HomePage page = (HomePage)ScenarioContext.Current["Home Page"];
            AuthenticationPage authenticationPage = page.GoToAuthenticationPage();
            ScenarioContext.Current["authenticationPage"] = authenticationPage;

        }
}
}

标签: c#seleniumbddspecflow

解决方案


我通常将 PageObjects 作为 Steps 类的属性,然后在 Steps 类构造函数中初始化它们。之后我可以对这些对象做任何事情。


推荐阅读