【问题标题】:Selenium cannot access actions in BasePage of my frameworkSelenium 无法访问我框架的 BasePage 中的操作
【发布时间】:2017-12-14 11:35:24
【问题描述】:

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

当到达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
}

【问题讨论】:

    标签: c# selenium page-factory


    【解决方案1】:

    在您拨打电话之前:

    dashboardPage.PolicyBasePage.SearchButton();
    

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

    【讨论】:

    • 对不起,我不太清楚你的意思,我尝试在以下方法中添加new PolicyBasePage() public DashboardPage(),但我收到相同的错误消息
    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2016-10-07
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多