2014-05-22 2 views
0

이것은 C# 셀레늄 웹 드라이버 자동화입니다. C#에서 실행되는 스크립트를 작성하여 웹 페이지에 대한 보고서를 제공합니다. 그러나 사용자는 10 개의 다른 링크를 선택하여 페이지 내에서 보고서를 만들 수 있습니다. 10 개의 다른 링크에 대해 이렇게해야하므로 기술적으로 스크립트 내에서 한 줄만 변경됩니다.은 C#의 switch 문 안에서 클래스를 호출 할 수 있습니다.

1 개의 스크립트를 유지하고 각 링크의 클래스를 사용하여 스위치 (사례) 시나리오에서 메소드를 호출하는 방법이 있습니까 (이 클래스는 실행할 테스트 케이스를 결정합니다). 또는 각 링크마다 스크립트를 10 번 작성해야합니까?

public static string ProCenter_Top40_Programs_Careers(IWebDriver driver, string baseURL, string filepath, string UserName, string Password, string LastName, string FirstName) 
     { 
      string PassScreenPrintFilePath; 
      XapQA.Transitions.Common.ProCenter_SignIn(driver, baseURL, UserName, Password, FirstName, LastName); 
      driver.FindElement(By.LinkText("Reports")).Click(); 
      driver.waitForPageToLoad(); 
      driver.FindElement(By.LinkText("Create a New Report")).Click(); 
      driver.waitForPageToLoad(); 
      //TODO: Add a switch case that tells me wich type of report i want. 
      string method = 
      //This is what I want to change 
      driver.FindElement(By.LinkText("Top 40 Saved Programs/Majors")).Click(); 
      driver.waitForPageToLoad(); 
+2

나는 당신이 우리가 더 나은 당신이 요구하는지 이해할 수있는 몇 가지 코드를 추가 할 필요가 있다고 생각합니다. – spender

+0

클래스가 동일한 인터페이스의 멤버이고 인터페이스 서명에 단일 명령이 들어있는 경우. 꽤 쉬워야합니다. –

+0

미안하지만, 처음으로 게시하는 경우는 비교적 새로운 편입니다. 굵은 줄만 바꿀 필요가있는 유일한 줄입니다. 그래서 저의 생각은 그 줄을 switch 문으로 바꾸고 클래스를 매개 변수로 사용하여 switch 문을 확인하는 것입니다. – user2961832

답변

0

나는 더 깨끗한 옵션이 매개 변수로 문자열 값을 추가하는 것이라고 생각합니다.

public static string RunReport(....., string reportLinkText) 
{ 
    /* Code as before, except: */ 
    driver.FindElement(By.LinkText(reportLinkText)).Click(); 
} 

public static string ProCenter_Top40_Programs_Careers(...) 
{ 
    RunReport(..., "Top 40 Saved Programs/Majors"); 
}