Скриншот с огурцом Groovy - PullRequest
1 голос
/ 13 июня 2019

Я работаю с функциями Cucumber и Groovy как определениями шагов в Katalon Studio.Поскольку у нас есть каждый шаг в определении шага, и мы хотели сделать снимок экрана, когда шаг не удался (AShot или что-то еще).Я хотел бы иметь код, чтобы сделать снимок и хотел бы знать, нужно ли нам это в каждом файле определения шага.

Я видел этот похожий вопрос на этом форуме, но не получил четкого ответа.

Обратите внимание, что я знаю опцию «Сделать снимок экрана при неудачном выполнении» в настройках.

Можете ли вы предоставить образец для продолжения?

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Попробуйте добавить следующее к вашему @After тестовому хуку (или тестовым прослушивателям ):

@After
public void TearDown(Scenario scenario) {
    if (scenario.isFailed()) {
            WebDriver driver = DriverFactory.getWebDriver()
            byte[] screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");
            scenario.write(scenario.getName());
    }
}  

Вам понадобится несколько импортов:

import cucumber.api.Scenario;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import com.kms.katalon.core.webui.driver.DriverFactory;

Или просто нажмите Ctrl + Shift + O, чтобы автоматически импортировать отсутствующие классы.

0 голосов
/ 14 июня 2019

1-й, вы планируете запускать как набор тестов вашего пакета тестов, вам не нужно добавлять код для захвата скриншотов, Katalon сделает это автоматически.

для запуска в качестве тестового примера, используйте приведенный ниже пример

public void catchNotyMessage(){

TestObject noty_warning = WebUI.modifyObjectProperty (findTestObject ("DUMMY"), 'css', 'equals', 'div.noty_type_warning', верно) TestObject noty_error = WebUI.modifyObjectProperty (findTestObject ("DUMMY"),' css ',' equals ',' div.noty_type_error ', true)

if (WebUI.verifyElementPresent(noty_error, 1, FailureHandling.OPTIONAL)){
    this.takeWebElementScreenshot(noty_error)
}
else if (WebUI.verifyElementPresent(noty_warning, 1, FailureHandling.OPTIONAL)){
    this.takeWebElementScreenshot(noty_warning)
}

}

...