2016-03-25 11 views
1

Java Cucumberのステップの間にスクリーンショットを取る方法はありますか?キュウリのJavaスクリーンショット

私は次のシナリオを持っている:

@Scenario_1 
Given I log into url 
And I see the home page is displayed in English //Take screenshot 
And I click on 'Edit Profile' 
And I see the language set to 'English' 
When I change the language to Chinese //Take screenshot 
And I navigate to home page 
Then everything is displayed in Chinese //Take screenshot 

私はシナリオの特定のステップのためのスクリーンショットを撮りたいです。

私は現在、「後」の方法でスクリーンショットを撮っています。

@After() 
public void execute_after_every_scenario(Scenario s) throws InterruptedException 
{ 
    Thread.sleep(2000); 

    final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); 
    s.embed(screenshot, "image/png"); 

    driver.quit(); 
} 

期待どおり、これは最後のステップのみの画像をキャプチャしています。

他の2ステップの画像をキャプチャし、「後」の方法と同じ方法で画像を埋め込むにはどうすればよいですか?

私は、スクリーンショットを取得し、必要に応じてそのメソッドを呼び出すための新しいメソッドを作成しようとしました。しかし、 'After'で指定された方法以外の方法でも、シナリオを引数として取ることはできますか?

take_screenshot(Scenario_1, driver); 

public void take_screenshot(Scenario s,WebDriver driver) 
{ 
    final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); 
    s.embed(screenshot, "image/png"); 
} 

どうすればよいですか?

答えて

0

スクリーンショットを作成します。多分このような何か:

public class YourStepDefinitions { 

    private Scenario myScenario; 

    @Before() 
    public void embedScreenshotStep(Scenario scenario) { 

     myScenario = scenario; 

    } 

    @Then ("^I take a screenshot$") 
    public void i_take_a_screenshot() throws Throwable { 

     try { 
      myScenario.write("Current Page URL is " + driver.getCurrentUrl()); 
      byte[] screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES); 
      myScenario.embed(screenshot, "image/png"); // Stick it in the report 
     } catch (WebDriverException somePlatformsDontSupportScreenshots) { 
      log.error(somePlatformsDontSupportScreenshots.getMessage()); 
     } catch (ClassCastException cce) { 
      cce.printStackTrace(); 
     } 
    } 
} 
+0

正確に私が必要としたもの。ありがとう! – sanaku

関連する問題