如何使用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();
}