0

我目前有一个框架,它LoginPage.csDashboardPage.cs. 在DashboardPage.cs页面顶部有实用程序导航栏,它将出现在所有页面上。因此,我所做的是将PolicyBasePage.csLoginPage.cs.

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

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

测试方法.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();
}

仪表板页面.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
}
4

1 回答 1

0

在您拨打电话之前:

dashboardPage.PolicyBasePage.SearchButton();

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

于 2017-12-14T11:40:51.260 回答