c# - 在 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;
}
}
}
解决方案
我通常将 PageObjects 作为 Steps 类的属性,然后在 Steps 类构造函数中初始化它们。之后我可以对这些对象做任何事情。
推荐阅读
- swiftui - 修复难以辨认的 macOS 破坏性警报按钮 (SwiftUI)
- flutter - 根据暗/亮模式将彩色背景替换为颤动应用程序的渐变背景
- .htaccess - 如何在 htaccess 上限制域
- azure-ad-b2c - azure ad b2c 防止密码重复使用
- ada - 我可以在 Ada 中定义自己的二元运算符吗?
- javascript - React.js - Axios 获取 .json 文件。前端
- delphi - 使用 IFMXImageManagerService 时 iOS 上的访问冲突
- r - 无法在具有 Apple M1 芯片的最新 macbook 上加载 R 包 gmm
- regex - 将尾随“.1”替换为“.2”
- system-verilog - 在 SystemVerilog 中声明接口时出现未声明的类型错误