【问题标题】:Page Object Model Practices页面对象模型实践
【发布时间】:2016-12-27 17:03:18
【问题描述】:

我正在使用带有 Selenium 的页面对象模型为网站构建测试框架

我在想,一般来说,如果我有两个具有确切用户控件和功能但 URL 不同的页面,我应该创建一个父页面类,其中有两个继承自它的类。 但是,如果我有相同的两个页面,但有不同的控件定位器怎么办?你怎么看?你认为为每个页面创建一个完全独立的类会是一个好习惯吗?或者有没有办法让子类覆盖定位器?知道我正在使用 PageFactory。

这是一个例子

 public class Header 
    {
    [FindsBy(How = How.ClassName, Using = "logout_button")]
    public IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

public class SecondHeader
{
    [FindsBy(How = How.ClassName, Using = "logout")]
    public IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

【问题讨论】:

  • 使用继承,构建父(父)页面并将定位器值作为参数传递以获取控件。 HTH。
  • 使用时如何传递定位器[FindsBy(How = How.method, Using = value)]
  • 你能快点把示例代码贴在这里吗?
  • @MuralidharanDeenathayalan 发布更新

标签: c# selenium selenium-webdriver pageobjects


【解决方案1】:

你可以这样做:

public class Header 
    {
    [FindsBy(How = How.ClassName, Using = "logout_button")]
    public virtual IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

public class SecondHeader: Header
{
    [FindsBy(How = How.ClassName, Using = "logout")]
    public overidde IWebElement BtnLogout { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2017-12-03
    • 1970-01-01
    相关资源
    最近更新 更多