Сделать скриншот с огурцом

Я только узнаю, как использовать огурец. Можете ли вы сказать мне, как завершить этот код?

Вы можете реализовать определения шагов для неопределенных шагов с помощью этих фрагментов:

Then /^I take a screenshot$/ do
    pending # express the regexp above with the code you wish you had
end

person Sokhom Ratanak    schedule 23.04.2013    source источник
comment
Дайте больше информации... Какой язык вы используете?   -  person Aravin    schedule 25.11.2015


Ответы (6)


Скриншоты обычно делаются, когда происходит что-то неожиданное. Вы также можете сделать снимок экрана, чтобы сообщить о сбое тестового примера. В этом конкретном случае у вас должна быть логика захвата скриншота в @After, который будет выполняться для каждого сценария. Java, селеновая версия,

@After("@browser")
public void tearDown(Scenario scenario) {
    if (scenario.isFailed()) {
            final byte[] screenshot = ((TakesScreenshot) driver)
                        .getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png"); //stick it in the report
    }
    driver.close();
}
person nilesh    schedule 27.05.2013

  1. Вы можете использовать стандартные шаги (предварительно определенные), чтобы сделать снимок экрана.

    Then take picture
    

Нет необходимости в каком-либо определении шага. Огурец также поставляется со многими другими предопределенными шагами. См. другие стандартные шаги

  1. Если вам все еще нужно написать определение шага.

    Then /^I take a screenshot$/ do
      page.save_screenshot('image_name.png')
    end
    
person Aravin    schedule 25.11.2015
comment
Я думаю, вы связали готовые шаги для Calabash, а не Cucumber - person stansult; 02.03.2016
comment
Я не думаю, что это хорошая идея, так как кажется, что вводится синтетический шаг только для скриншотов, который никоим образом не связан с тестируемым бизнес-сценарием. Лучше использовать хук Cucumber, чтобы можно было решить делать скриншоты после выполнения каждого шага. - person Big Kahuna; 24.03.2017
comment
@BigKahuna Это зависит от того, используете ли вы этот шаг исключительно для целей отладки - и делаете ли вы также эту функцию для использования, когда вы также проходите определения шагов. - person KyleFairns; 06.06.2017

Я предоставляю код, который сделает снимок, когда сценарий не сработает, я надеюсь, вы сможете изменить его в соответствии с вашими потребностями, прокомментируйте здесь, если вы не можете этого сделать. Этот код находится в ruby ​​​​с системой Ubuntu.

#Create a directory for storing snapshot
dir_path = "/home/vchouhan/vijay_work/snapshot"
unless Dir.exist?(dir_path)
    Dir.mkdir(dir_path,0777)
    puts "=========Directory is created at #{dir_path}"
else
    puts "=========Directory is exist at #{dir_path}"
end

#Run after each scenario
After do |scenario|
  #Check, scenario is failed?
  if(scenario.failed?)
         time = Time.now.strftime('%Y_%m_%d_%Y_%H_%M_%S_')
         name_of_scenario = time + scenario.name.gsub(/\s+/, "_").gsub("/","_")
         puts "Name of snapshot is #{name_of_scenario}"
         file_path = File.expand_path(dir_path)+'/'+name_of_scenario +'.png'
         page.driver.browser.save_screenshot file_path
         puts "Snapshot is taken"
    puts "#===========================================================#"
    puts "Scenario:: #{scenario.name}"
    puts "#===========================================================#"
  end
end
person Vijay Chouhan    schedule 20.09.2013

В Java вы можете реализовать этот шаг так:

@Then("^I take a screenshot$")
public void i_take_a_screenshot()
{
  // Your code goes here
}
person The Cat    schedule 29.04.2013
comment
Я не думаю, что это хорошая идея, так как кажется, что вводится синтетический шаг только для скриншотов, который никоим образом не связан с тестируемым бизнес-сценарием. Лучше использовать хук Cucumber, чтобы можно было решить делать скриншоты после выполнения каждого шага. - person Big Kahuna; 24.03.2017

Если вы используете watir-webdriver для тестирования, вы можете вызвать метод снимка экрана в объекте вашего браузера и сохранить его. http://watirwebdriver.com/screenshots/

Если вы используете элементы управления Windows, вы можете использовать для этого гем win32/screenshot.https://github.com/jarmo/win32screenshot

person airazor    schedule 09.05.2013

Улучшенная версия предыдущего ответа. У этого есть обработка ошибок, запись URL-адреса в точке сбоя. Подумал, что это может быть полезно.

@After("@UI" )
public void embedScreenshotOnFail(Scenario s) {
    if (s.isFailed()) {
        try {
            byte[] screenshot = ((TakesScreenshot) getDefaultDriver()).getScreenshotAs(OutputType.BYTES);
            s.embed(screenshot, "image/png" );
            s.write("URL at failure: " + getDefaultDriver().getCurrentUrl());
        } catch (WebDriverException wde) {
            s.write("Embed Failed " + wde.getMessage());
        } catch (ClassCastException cce) {
            cce.printStackTrace();
        }
    }
}
person Joviano Dias    schedule 08.06.2015