如何使用POM遍历TestMethod中的多个页面
How to traverse multiple pages in TestMethod using POM
我正处于学习的初级阶段Selenium/POM,我很好奇这样的东西是如何布置的...
假设我有一个包含多个页面的应用程序,我为每个页面创建了一个 Class(即 HomePage.cs、LogInPage.cs 等....),其中包含所有页面内的定位器和 actions/logic。如果我想创建一些覆盖所有页面的冒烟测试,我会这样做吗?
[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
}
实例化每个class我来了吗?或者这不是构建测试的正确方法吗?我了解基本的单页测试,但我真的很困惑,如果我的测试涉及多个页面,考虑到 POM 设计,我的测试需要如何构建。
首先,我建议将一个大的冒烟测试拆分成更小的 chunks.I 假设您使用的是 MSTest(因为您有 TestMethod你的代码)。使用属性 TestClass 标记将包含某些冒烟测试的 class。
通过将您的冒烟测试分成较小的测试,您将能够轻松确定失败的部分以及应用程序的哪些部分有效 fine.Image 当您进行一项大型测试时,验证开始 fails.The 执行会在这里停止,测试的其余部分不会 run.By 砍掉它,只有一个测试会失败,其余的可能是 运行.
现在回到你的主要问题。处理更改页面的好方法是什么?如果更改伴随着应用程序中的特定流程(例如,登录后,您将被重定向到主页),则最好在导致打开它的方法中对新页面的 return 对象进行设置。示例:
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;
}
}
我也建议使用 FluentAssertion。
所有这些,测试看起来像:
[TestMethod]
public void Test_Login_To_Home_Page()
{
new LoginPage(this.driver)
.LoginAs("user", "password")
.GoTo()
.IsAt()
.Should()
.BeTrue();
}
我正处于学习的初级阶段Selenium/POM,我很好奇这样的东西是如何布置的...
假设我有一个包含多个页面的应用程序,我为每个页面创建了一个 Class(即 HomePage.cs、LogInPage.cs 等....),其中包含所有页面内的定位器和 actions/logic。如果我想创建一些覆盖所有页面的冒烟测试,我会这样做吗?
[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
}
实例化每个class我来了吗?或者这不是构建测试的正确方法吗?我了解基本的单页测试,但我真的很困惑,如果我的测试涉及多个页面,考虑到 POM 设计,我的测试需要如何构建。
首先,我建议将一个大的冒烟测试拆分成更小的 chunks.I 假设您使用的是 MSTest(因为您有 TestMethod你的代码)。使用属性 TestClass 标记将包含某些冒烟测试的 class。
通过将您的冒烟测试分成较小的测试,您将能够轻松确定失败的部分以及应用程序的哪些部分有效 fine.Image 当您进行一项大型测试时,验证开始 fails.The 执行会在这里停止,测试的其余部分不会 run.By 砍掉它,只有一个测试会失败,其余的可能是 运行.
现在回到你的主要问题。处理更改页面的好方法是什么?如果更改伴随着应用程序中的特定流程(例如,登录后,您将被重定向到主页),则最好在导致打开它的方法中对新页面的 return 对象进行设置。示例:
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;
}
}
我也建议使用 FluentAssertion。 所有这些,测试看起来像:
[TestMethod]
public void Test_Login_To_Home_Page()
{
new LoginPage(this.driver)
.LoginAs("user", "password")
.GoTo()
.IsAt()
.Should()
.BeTrue();
}