2017-09-28 13 views
1

두 가지 시나리오가있는 기능 파일이 있습니다. 첫 번째 반복 후, 나는이 시나리오를 다시 한번 실행하기를 원한다.오이에서 한 시나리오를 반복 실행하는 방법

무엇을 추가해야합니까? 단계 정의 파일에 동일한 Java 코드를 복사해야합니까? 아니면 다른 방법이 있습니까?

기능 파일 ::

@sanity 
Feature: To test Proscape Smoke Test 

Scenario: To launch the Proscape Application Mockup URL 
Given Open the chrome and launch the application 
When user enter url 
And click on Test Project 
And user clicks on Parameter button of Details page 
Then Details Page should display 

Scenario Outline: Details page display 
Given Details page is diplayed 
When user enter value in first Fixture Type "<FF1>" 
And user enter second Fixture Type "<FF2>" 
And user enter third Fixture Type "<FF3>" 
And user clicks on Next button 
Then Category Page should display 

Examples:  
| FF1 | FF2 | FF3 | 
| a | b | c | 

StepDefinition : 당신이 더 많은 시나리오의, 당신은 당신의 기능을 파일에 추가 할 수 있습니다 실행하려면

@Given("^Open the chrome and launch the application$") 
    public void open_the_chrome_and_launch_the_application() throws Exception { 
     System. setProperty("webdriver.chrome.driver", "C:\\Mohini\\AutomationStart\\chromedriver.exe"); 
     driver= new ChromeDriver() ; 
     driver.manage().window().maximize(); 
    } 


@When("^user enter url$") 
    public void user_enter_url() throws Exception { 
     driver.get("http://t53umx.axshare.com/#g=1&p=home"); 
     driver.findElement(By.id("Password")).sendKeys("landg"); 
     Thread.sleep(5000); 
     driver.findElement(By.className("loginsubmit")).click(); 
     driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);  
    } 

@When("^click on Test Project$") 
    public void click_on_Test_Project() throws Exception { 
     driver.switchTo().frame("mainFrame"); // use this if it's in frame and you don't know how to locate it 
     WebElement element = (new WebDriverWait(driver, 100)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='u133_img']"))); 

     Actions action = new Actions(driver); 

     action.moveToElement(element).click(); 
     Thread.sleep(5000); 
     //element.click(); 
     action.perform(); 
     driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);  
    } 

@When("^user clicks on Parameter button of Details page$") 
    public void user_clicks_on_Parameter_button_of_Details_page() throws Exception { 
     //driver.findElement(By.id("u47_div")).click(); 
     try { 
      WebDriverWait wdw = new WebDriverWait(driver, 50); 
      long startTime = System.currentTimeMillis(); 
      long endTime = System.currentTimeMillis(); 
      long pageLoadTime = (endTime - startTime); 
      WebElement element = wdw.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='u47']"))); //we will not use div here in id 

      Actions action = new Actions(driver); 
      action.moveToElement(element).build().perform(); 
      Thread.sleep(5000); 
      element.click(); 

      System.out.println(pageLoadTime); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

@Then("^Details Page should display$") 
    public void details_Page_should_display() throws Exception { 
     Thread.sleep(5000);  
    } 

@Given("^Details page is diplayed$") 
    public void details_page_is_diplayed() throws Exception { 

    } 

@When("^user enter value in first Fixture Type \"([^\"]*)\"$") 
    public void user_enter_value_in_first_Fixture_Type(String arg1) throws Exception { 
     WebDriverWait wdw1 = new WebDriverWait(driver, 50); 
     WebElement element1 = wdw1.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='u68_input']"))); //we will not use div here in id 
     System.out.println("Ff1 = "+arg1); 
     element1.sendKeys(arg1); 
    } 

@When("^user enter second Fixture Type \"([^\"]*)\"$") 
    public void user_enter_second_Fixture_Type(String arg1) throws Exception { 
     System.out.println("Ff2 = "+arg1); 
     driver.findElement(By.xpath("//*[@id='u70_input']")).sendKeys(arg1); 
     Thread.sleep(2000); 
    } 

@When("^user enter third Fixture Type \"([^\"]*)\"$") 
    public void user_enter_third_Fixture_Type(String arg1) throws Exception { 
     System.out.println("Ff3 = "+arg1); 
     driver.findElement(By.xpath("//*[@id='u71_input']")).sendKeys(arg1); 
     Thread.sleep(2000); 
    } 

@When("^user clicks on Next button$") 
    public void user_clicks_on_Next_button() throws Exception { 
     Select fixturetype= new Select(driver.findElement(By.xpath("//*[@id=\"u85_input\"]"))); 
     fixturetype.selectByVisibleText("LED"); 
     Select lamp= new Select(driver.findElement(By.xpath("//*[@id=\"u84_input\"]"))); 
     lamp.selectByVisibleText("1000W"); 
     driver.findElement(By.xpath("//*[@id=\"u82_text\"]")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.xpath("//*[@id=\"u89_text\"]")).click(); 
     Thread.sleep(2000); 
    } 

@Then("^Category Page should display$") 
    public void category_Page_should_display() throws Exception { 
     //driver.switchTo().frame("mainFrame"); 
     WebDriverWait wdw = new WebDriverWait(driver, 300); 
     WebElement element = wdw.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='u1041']"))); 
     element.click(); 
     Thread.sleep(5000); 
     driver.findElement(By.xpath("//*[@id='u1197']")).click(); 
     Thread.sleep(5000); 
     driver.findElement(By.xpath("//*[@id='u1117']")).click(); 
     Thread.sleep(5000); 
     driver.findElement(By.xpath("//*[@id=\"u1113\"]")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.xpath("//*[@id=\"u1137\"]")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.xpath("//*[@id=\"u1215\"]")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.xpath("//*[@id=\"u1138\"]")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.xpath("//*[@id=\"u1114\"]")).click(); 
     Thread.sleep(2000); 
    } 
} 

답변

0

. 다른 예제와 함께 시나리오 개요를 사용하면 테스트 사례를 추가하는 것이 매우 쉽습니다. 당신은 예를 들어, 테이블의 다른 행을 추가하여 또 다른 예를 추가 할 수 있습니다

Examples:  
| FF1 | FF2 | FF3 | 
| a | b | c | 
| d | e | f | 

당신의 예에서, 그것은 보인다 첫 번째 시나리오는 중단 된 부분에서 두 번째 시나리오 (시나리오 개요)을 (실행하려는처럼 ie 세부 정보 페이지에있는 ie).

첫 번째 시나리오는 두 번째 시나리오 만 설치 (또는 시나리오 설명), 당신과 같이 함께 병합해야하는 경우 :

사용자 감안할 때 여기
@sanity 
Feature: Proscape Smoke Test 

Scenario Outline: Details page display 
Given the user opens the details page of the Test Project 
When user enter value in first Fixture Type "<FF1>" 
And user enter second Fixture Type "<FF2>" 
And user enter third Fixture Type "<FF3>" 
And user clicks on Next button 
Then Category Page should display 

Examples:  
| FF1 | FF2 | FF3 | 
| a | b | c | 
| d | e | f | 

는 "테스트의 세부 정보 페이지를 엽니 다 프로젝트 "는 이전 단계 (응용 프로그램 URL을 열고 세부 정보 페이지로 이동)로 구현해야합니다.