2016-12-27 47 views
0

我想單擊網頁上提供的許多鏈接中的一個鏈接,並且我寫了一個代碼,下面給出。所以任何人都可以告訴我,我們可以使用枚舉或任何其他方式來點擊特定的鏈接。作爲回報,它會給頁面對象。在C#Webdriver中,我想單擊從網頁上可用的許多鏈接中的一個鏈接

裏面我是用帶開關的情況下,有兩個鏈接的代碼,

public Object SelectMenu(string menuName) 
{ 

    Object result = null; 

    IWebElement menuTemp = driver.FindElement(By.XPath(".//a[contains(text(),'" + menuName + "')]")); 

    if (menuTemp.Enabled) 
    { 
     menuTemp.Click(); 
     if (menu.ToUpper() == "COUNTRY") 
     { 
      result = new CountryPage(driver).Load(); 
     } 

     else if (menu.ToUpper() == "PARTNER") 
     { 
      result = new PartnerPage(driver).Load(); 
     } 

回答

0

您正在尋找這樣的事情?

string menu = "country"; 

     switch (menu.ToUpper()) 
     { 
      case "COUNTRY": 
       result = new CountryPage(driver).Load(); 
       break; 
      case "PARTNER": 
       result = new PartnerPage(driver).Load(); 
       break;     
     } 
+0

看到我的代碼,menuTemp是鏈接,如果der 30鏈接,所以我必須寫30個案例,點擊代碼後,我們會回來作爲您在ur代碼中編寫的頁面的回報,它也可以減少dis代碼。 – Harshit007

0

如果你不想打字了,您希望實例化類,但的菜單項的命名和你...... Page類是一致的,你可以使用反射查找您的頁面類型,並結合構造函數和Load方法。這種做法的一個例子是這樣的:

var menu = "Country"; 
var pageClass = (from asm in AppDomain.CurrentDomain.GetAssemblies() 
      from pageType in asm.GetTypes() 
      let ctor = pageType.GetConstructor(new [] {typeof(IWebDriver)}) 
      let load = pageType.GetMethod("Load", Type.EmptyTypes) 
      where pageType.Name.EndsWith("Page") 
      && pageType.Name.StartsWith(menu, StringComparison.InvariantCultureIgnoreCase) 
      && ctor != null 
      && load != null 
      select new { Constructor = ctor, Load = load}).Single(); 

var page = pageClass.Constructor.Invoke(new []{webdriver}); 
var result = pageClass.Load.Invoke(page, null); 
// result has now your CountryPage instance 

這是如何工作的:

通過調用GetAssemblies過程中的所有組件可以重複,並呼籲GetTypes返回所有公共類型。
您需要您的Page類在構造函數中接受IWebDriver,因此每種類型都會通過GetConstructor調用進行查詢。負載需求由GetMethod完成。
最後要做的是檢查類型的名稱是否與以Page結尾的慣例匹配,並從menuname開始。
在最後一步中返回一個單獨的(沒有其他)項目。 從這個結果中,我們可以通過調用invoke來創建類型,然後爲Load成員調用invoke method
返回最終結果。

注意,如果你創建一個CountryCityPage類型,你會發現兩種類型。我把它作爲一個練習,爲讀者提出一個解決方案

相關問題