Selenium C#如何从另一个类调用一个方法,这两个类都继承自基类

时间:2018-04-22 15:23:08

标签: c# selenium selenium-webdriver webdriver

我无法从其中一个课程中看到这些方法。 我创建了一个MobileLoginPage类,我想单击“菜单”按钮。 我注意到已经定义了一个方法来从名为MobileNavigationPage的类中单击“菜单”按钮。该方法称为ClickMenuNavigation

由于此方法已存在,我应该可以从我的MobileLoginPage类中调用它。避免重复代码。 当我编写代码MobileNavigationLogin时,我无法调用它。 没有方法出现。 我甚至尝试通过定义一个方法(getMenuNavigationElement)来返回定位器来调用locator元素。我无法从LoginPage类中看到这个定位器。

该类已在BasePage类中实例化,我不知道为什么我看不到它的方法。

我的代码段是:

BasePage是我们所有的类都在这里实例化了:

public class BasePage : SpecflowBaseTest

{
    internal MobileNavigationPage MobileNavigationPage => new 
    MobileNavigationPage(Browser);
    internal MobileLoginPage MobileLoginPage => new 
    MobileLoginPage(Browser);
}

MobileNavigationPage是:

public void MobilenavigationPage : BasePage
{
    #region Elements

    [FindsBy(How = How.Id, Using = "MobileMenuNavigation")]
    private IWebElement MenuButton {get; set;}

    #endregion

    #region Actions

    private void ClickMenuNavigation()
    {
        Actions.Click.Element(Browser, MenuButton);

    }

    private IWebElement getMenuNavigationElement()
    {
        return MenuButton;
    }

    #endregion 
}

MobileLoginPage是:

public class MobileLoginPage : BasePage
{
    # region Actions

    public void ClickBrandFromMenuNavigation{}
    {
        // I want to call ClickMenuNavigation() from here                   
    }

    #endregion
}

从LoginPage类中如何调用MobileNavigationPage中定义的方法?

1 个答案:

答案 0 :(得分:1)

该方法为private,这意味着它只能在MobilenavigationPage内使用。

你可以将其设为public,然后它会显示 -

public void ClickBrandFromMenuNavigation()
{
    base.MobileNavigationPage.ClickMenuNavigation();                   
}