Selenium无法访问我的框架

时间:2017-12-14 11:35:24

标签: c# selenium page-factory

我目前有一个从LoginPage.cs开始的框架,并执行将用户登录到系统的操作,然后将用户带到DashboardPage.cs。在DashboardPage.cs上,页面顶部有实用程序导航栏,它将显示在所有页面上。所以我所做的是将常见操作分为PolicyBasePage.cs,除了LoginPage.cs之外,所有其他页面都可以访问这些操作。

我的testmethod在到达dashboardPage.PolicyBasePage.SearchButton();时中断,我收到以下错误消息:

  

消息:测试方法TestAutomationFrameworkPOMS.TestScript.Tests.Test   抛出异常:System.NullReferenceException:对象引用没有   设置为对象的实例。

TestMethod.cs:

[TestMethod]
public void Test()
{
    NavigationHelper.NavigateToUrl(ObjectRepository.Config.GetWebsite());

    var loginPage = new LoginPage();
    loginPage.UsernameTextBox(ObjectRepository.Config.GetUsername());
    loginPage.PasswordTextBox(ObjectRepository.Config.GetPassword());
    loginPage.RememberMeCheckBox();
    loginPage.LoginButton();

    var dashboardPage = new DashboardPage();
    dashboardPage.PolicyBasePage.SearchButton();

    var searchPage = new SearchPage();
    searchPage.QuotePolicyNumberTextBox("0005");
    searchPage.SearchButton();

    var transACTPage = new TransACTPage();
    transACTPage.PostCodeTextBox("MTA");
    transACTPage.GoButton();
    GenericHelper.TakeScreenshot();
}

DashboardPage.cs:

public class DashboardPage
{
    private IWebElement driver;
    public PolicyBasePage PolicyBasePage { get; set; }

    #region WebElements

    #endregion

    public DashboardPage()
    {
        PageFactory.InitElements(ObjectRepository.Driver, this);
    }

    #region Actions

    #endregion
}

PolicyBasePage.cs:

public class PolicyBasePage
{
    #region WebElement

    [FindsBy(How = How.Id, Using = "id_Search")]
    private IWebElement Search;

    #endregion

    public PolicyBasePage()
    {
        PageFactory.InitElements(ObjectRepository.Driver, this);
    }

    #region

    public void SearchButton()
    {
        Search.Click();
    }

    #endregion
}

1 个答案:

答案 0 :(得分:0)

之前打电话给:

dashboardPage.PolicyBasePage.SearchButton();

你只创建一个新的dashboardPage对象我看不到这在任何地方继承你的PolicyBasePage。您还没有创建我可以看到的PolicyBasePage对象。您可以在dashboardPage Initialiser方法中创建它。