如何告诉FindsBy搜索此特定网站上的元素

时间:2017-03-23 16:24:42

标签: c# selenium testing webdriver qa

我开始学习Selenium Webdriver。看起来很简单,但我不确定如何使用PageObject Pattern。我想,我理解这个想法,但我不知道如何在一个项目中映射多个页面。例如:该网站包含许多子网站(即登录页面,创建一个帐户页面),我想为每个子网站创建PageObject。当我执行我的脚本时,我收到的信息尚未找到。我该怎么办?我应该创建一个separete drviers还是什么?

2 个答案:

答案 0 :(得分:2)

似乎你正在做的一切都是正确的:为每个页面创建一个新对象。为许多页面上的常见元素创建不同的对象(如页脚,页眉菜单等)。

然后要组合页面对象,首先需要从某处开始。例如,从您的主页。因此,使用MainPageObj与主页进行交互。只要导航到另一个页面,就需要在MainPageObj课程中使用方法。 此方法必须返回新页面的页面对象。因此,如果您从主页面打开“登录”页面,那么您的方法OpenLoginPage()应该返回LoginPageObj.

示例: MainPageObjLoginPageObj是页面对象类。

MainPageObj类有方法:

public LoginPageObj OpenLoginPage()
{
    LoginButton.Click();
    return new LoginPageObj();
}

所以以这种方式使用这个方法:

MainPageObj mainPage = new MainPageObj ();
LoginPageObj loginPage = mainPage.OpenLoginPage();

简单吗?)

如果你想使它更美化,那么添加静态类Pages并为你拥有的每个页面对象添加静态方法。每个方法都必须返回特定页面对象的新实例。

示例:

public static class RealSites
{
    public static class Kinopoisk
    {
        public static Kinopoisk.MainPage MainPage
        {
            get { return new Kinopoisk.MainPage(); }
        }
    }
}

在你的测试中使用它是这样的:

Pages.RealSites.Kinopoisk.MainPage.OpenMoviePage(url);
Pages.RealSites.Kinopoisk.MoviePage.DoSomethigElseMethod();

答案 1 :(得分:0)

您可以参考此链接来了解页面对象模型,之后您还可以为您的应用程序创建

http://www.seleniumeasy.com/selenium-tutorials/simple-page-object-model-framework-example

如果你想学习,那么selenium easy是初学者学习的最佳网站。