C# 如何使用POM在TestMethod中遍历多个页面
我正处于学习Selenium/POM的开始阶段,我很好奇这样的东西是如何布置的 假设我有一个包含多个页面的应用程序,我有一个为每个页面创建的类(即HomePage.cs、LogInPage.cs等),该类包含页面中的所有定位器和操作/逻辑。如果我想创建一个能够访问所有页面的烟雾测试,我会这样做吗C# 如何使用POM在TestMethod中遍历多个页面,c#,selenium,pageobjects,C#,Selenium,Pageobjects,我正处于学习Selenium/POM的开始阶段,我很好奇这样的东西是如何布置的 假设我有一个包含多个页面的应用程序,我有一个为每个页面创建的类(即HomePage.cs、LogInPage.cs等),该类包含页面中的所有定位器和操作/逻辑。如果我想创建一个能够访问所有页面的烟雾测试,我会这样做吗 [TestMethod] public void SmokeTest() { LogIn login = new LogIn(); //do somet
[TestMethod]
public void SmokeTest()
{
LogIn login = new LogIn();
//do something
HomePage homepage = new HomePage();
//do something
//do something
PostsPage postspage = new PostsPage();
// do something
// do something
}
在我开始时实例化每个类?或者这不是构建测试的正确方法?我理解基本的单页测试,但考虑到POM设计,如果我的测试涉及多个页面,我真的很困惑我的测试需要如何结构化。首先,我建议将一个大的冒烟测试分成更小的块。我假设您使用的是MSTest(因为您的代码中有TestMethod)。使用属性TestClass标记将包含某些冒烟测试的类 通过将冒烟测试拆分为较小的测试,您将能够轻松确定哪些测试失败,以及应用程序的哪些部分工作正常。想象一下,当您有一个大型测试时,验证一开始就失败了。执行将在此停止,测试的其余部分将不会运行。通过拆分,只有一个测试会失败,其余的可以运行 现在回到你的主要问题。处理页面更改的好方法是什么?如果更改是在应用程序中的特定流中进行的(例如,登录后,您将被重定向到主页),最好使用导致打开新页面的方法返回新页面的对象。例如:
public class LoginPage
{
private IWebDriver _driver;
public LoginPage(IWebDriver driver)
{
_driver = driver;
}
public HomePage LoginAs(string user, string password)
{
// Providing user and password and clicking login button
return new HomePage(_driver);
}
}
主页:
public class HomePage
{
private IWebDriver _driver;
public HomePage(IWebDriver driver)
{
_driver = driver;
}
public HomePage GoTo()
{
// Do something
return this;
}
public bool IsAt()
{
return true;
}
}
我也建议使用。
在所有这些情况下,测试将如下所示:
[TestMethod]
public void Test_Login_To_Home_Page()
{
new LoginPage(this.driver)
.LoginAs("user", "password")
.GoTo()
.IsAt()
.Should()
.BeTrue();
}
谢谢,在每个类的末尾添加一个返回另一个页面对象的方法是有意义的。此外,将测试分解为更小的测试也是有意义的,我大体上同意,但对于烟雾测试/端到端,我看不出这是如何工作的。如果我有主页、登录页面、第3-10页……如果我想测试整个流程,我如何分解这些内容?我不能进入第3页,第4页等没有经过登录和主页第一。有道理?这篇文章让mealso感到困惑,很好地说明了流畅的断言。这将使其他人更容易阅读!谢谢如果你在做一个E2E测试,它涵盖了特定的流,那么你是对的,应该在一个测试中。当我阅读您的问题时,我认为您希望登录并只验证几页,而不涉及特定案例。