1

私は自分のウェブサイトの最初の2ページを設定しており、ページの上部にはユーティリティナビゲーションバーを共有しています。 2ページでわかるように、これらの要素を見つけてクリックするために使用したコードを複製する必要がありました。共通の要素を基本ページに移動し、他のページにその基本ページのコードを共有させることができます。セレンのページ設定用のベースページ

私の質問は、重複したコードを新しいファイルに移動するにはどうしたら、他のページからもすべての要素にアクセスできるようにすることです。

DashboardPage:

public class DashboardPage 
    { 
     private IWebDriver driver; 

     #region WebElement 

     [FindsBy(How = How.Id, Using = "AgentPAS")] 
     private IWebElement Policy; 

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

     [FindsBy(How = How.LinkText, Using = "Activity")] 
     private IWebElement Activity; 

     [FindsBy(How = How.LinkText, Using = "Premium")] 
     private IWebElement Premium; 

     [FindsBy(How = How.LinkText, Using = "Production Summary")] 
     private IWebElement ProductionSummary; 

     [FindsBy(How = How.LinkText, Using = "Quote to Bind")] 
     private IWebElement QuoteToBind; 

     #endregion 

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

     #region Actions 

     public void PolicyButton() 
     { 
      Policy.Click(); 
     } 

     public void BillingButton() 
     { 
      Billing.Click(); 
     } 

     public void ActivityLink() 
     { 
      Activity.Click(); 
     } 

     public void PremiumLink() 
     { 
      Premium.Click(); 
     } 

     public void ProductionSummaryLink() 
     { 
      ProductionSummary.Click(); 
     } 

     public void QuoteToBindLink() 
     { 
      QuoteToBind.Click(); 
     } 

     #endregion 

    } 

ClientDetailsOnePage:

public class ClientDetailsOnePage 
    { 
     private IWebElement driver; 

     #region WebElement 

     [FindsBy(How = How.Id, Using = "AgentPAS")] 
     private IWebElement Policy; 

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

     [FindsBy(How = How.XPath, Using = "//input[@fieldref='AccountInput.Title']")] 
     private IWebElement Title; 

     [FindsBy(How = How.XPath, Using = "//input[@fieldref='AccountInput.FirstName']")] 
     private IWebElement FirstName; 

     [FindsBy(How = How.XPath, Using = "//input[@fieldref='AccountInput.Name']")] 
     private IWebElement LastName; 

     [FindsBy(How = How.XPath, Using = "//input[@fieldref='AccountInput.DesignatedAuthority']")] 
     private IWebElement DesignatedAuthority; 

     [FindsBy(How = How.XPath, Using = "//span[@data-ref='displayEl']")] 
     private IWebElement UKResident; 

     [FindsBy(How = How.LinkText, Using = "Save & Exit")] 
     private IWebElement SaveExit; 

     [FindsBy(How = How.LinkText, Using = "Next")] 
     private IWebElement Next; 

     #endregion 

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

     #region Actions 

     public void PolicyButton() 
     { 
      Policy.Click(); 
     } 

     public void BillingButton() 
     { 
      Billing.Click(); 
     } 

     public void TitleDropDown(string text) 
     { 
      Title.SendKeys(text); 
     } 

     public void FirstNameTextBox(string text) 
     { 
      FirstName.SendKeys(text); 
     } 

     public void LastNameTextBox(string text) 
     { 
      LastName.SendKeys(text); 
     } 

     public void DesignatedAuthorityDropDown(string text) 
     { 
      DesignatedAuthority.SendKeys(text); 
     } 

     public void UKResidentCheckBox() 
     { 
      UKResident.Click(); 
     } 

     public void SaveExitButton() 
     { 
      SaveExit.Click(); 
     } 

     public void NextButton() 
     { 
      Next.Click(); 
     } 

     #endregion 
    } 

答えて

2

どちらのページには、ナビゲーションバーを持っているので、ナビゲーションバーページの一部です。ナビゲーションバーに別のクラスを作成し、好きなすべてのページでこれを再利用することができます。

これが組成物

クイック例と呼ばれている。

public class NavigationBar 
{ 
    [FindsBy(How = How.LinkText, Using = "Next")] 
    private IWebElement Next; 

    [FindsBy(How = How.LinkText, Using = "Previous")] 
    private IWebElement Previous; 

    public NavigationBar(IWebDriver driver) 
    { 
     PageFactory.InitElements(driver, this) 
    } 
} 

public class DashboardPage 
{ 
    public NavigationBar NavigationBar { get; set; } 

    public DashboardPage(IWebDriver driver) 
    { 
     NavigationBar = new NavigationBar(driver); 
    } 
} 

public class ClientDetailsOnePage 
{ 
    public NavigationBar NavigationBar { get; set; } 

    public ClientDetailsOnePage(IWebDriver driver) 
    { 
     NavigationBar = new NavigationBar(driver); 
    } 
} 
関連する問題