2017-04-03 69 views
-1

我的項目中有許多類似的執行函數,這些函數都來自基類。這些文件中的每一個都包含一個名爲IsAt()的函數,該函數根據我是否在正確的頁面上或不在我的過程中返回布爾值。下面是跨這些文件所使用的功能的一些例子..在不添加參數的情況下在基類中創建基於這三個函數的通用函數

實施例1

public bool IsAt() 
{ 
    try 
    { 
     DriverUtils.WaitTillElementVisible(_driver, ObjectRepository.H1); 
    } 
    catch (WebDriverTimeoutException) 
    { 
     return false; 
    } 
    if (ObjectRepository.PageHeaderLocator.Text != ObjectRepository.textOnPageIdentifier) 
     return false; 
    Console.WriteLine($"Login Page loaded successfully"); 
    return true; 
} 

例2

public bool IsAt() 
{ 
    try 
    { 
     DriverUtils.WaitTillElementVisible(_driver, ObjectRepository.UseAuthCodeBy); 
    } 
    catch (WebDriverTimeoutException) 
    { 
     return false; 
    } 
    if (ObjectRepository.UseAuthCodeLocator.Text != ObjectRepository.textOnPageIdentifier) 
     return false; 
    Console.WriteLine("Select two factor provider page loaded successfully!"); 
    return true; 
} 

實施例3

public bool IsAt() 
{ 
    try 
    { 
     DriverUtils.WaitTillElementVisible(_driver, ObjectRepository.H1); 
    } 
    catch (WebDriverTimeoutException) 
    { 
     return false; 
    } 
    if (ObjectRepository.PageHeaderLocator.Text != ObjectRepository.TextInPageIdentifier) 
     return false; 
    Console.WriteLine("Forgot password page loaded successfully"); 
    return true; 
} 

結構:

基於這裏的功能是結構以下是我認爲這將是實現..

public virtual bool IsAt() 
{ 
    OpenQA.Selenium.By obj; 
    var message = "My message!"; 

    try 
    { 
     DriverUtils.WaitTillElementVisible(_driver, obj); 
    } 
    catch (WebDriverTimeoutException) 
    { 
     return false; 
    } 

    if(obj.locator.text != obj.textOnPageIdentifier) 
     return false; 
    Console.WriteLine(message); 
    return true; 
} 

我怎樣才能實現這些功能作爲一個通用的功能?沒有向函數引入參數可能嗎?例如。 public bool IsAt(string message, obj myObject)

回答

1

你的意思是?

//example 1 
public bool IsAt() 
{ 
    return this.IsAt(ObjectRepository.H1, ObjectRepository.PageHeaderLocator.Text, $"Login Page loaded successfully"); 
} 

//example 2 
public bool IsAt() 
{ 
    return this.IsAt(ObjectRepository.UseAuthCodeBy, ObjectRepository.UseAuthCodeLocator.Text, "Select two factor provider page loaded successfully!"); 
} 

//example 3 
public bool IsAt() 
{ 
    return this.IsAt(ObjectRepository.H1, ObjectRepository.PageHeaderLocator.Text, "Forgot password page loaded successfully"); 
} 

//base class 
protected bool IsAt(object element, string match, string message) 
{ 
    try 
    { 
     DriverUtils.WaitTillElementVisible(_driver, element); 
    } 
    catch (WebDriverTimeoutException) 
    { 
     return false; 
    } 

    if(match != ObjectRepository.TextInPageIdentifier) 
     return false; 
    Console.WriteLine(message); 
    return true; 
} 
相關問題