【问题标题】:Serenity BDD doesn't take screenshots with appiumSerenity BDD 不使用 appium 截屏
【发布时间】:2018-11-09 11:37:01
【问题描述】:

我在使用带有 appium 的 Screenplay Pattern 时遇到了 Serenity BDD 的问题(我使用的是 Appium 1.3.1),该项目不会在每个步骤中生成屏幕截图,生成的报告不显示该步骤的捕获,但在我的代码中,我在 IDE 中没有任何问题或错误,这是我的代码和 Serenity 报告的捕获:

import net.serenitybdd.junit.runners.SerenityRunner;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.abilities.BrowseTheWeb;
import net.serenitybdd.screenplay.questions.page.TheWebPage;
import net.thucydides.core.annotations.Issue;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.Screenshots;
import net.thucydides.core.annotations.Steps;
import net.thucydides.core.annotations.findby.By;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import com.Otherpackage.tasks.OpenTheApplication;
import com.Otherpackage.tasks.Search;
import com.Otherpackage.tasks.escribeNombre;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

import static net.serenitybdd.screenplay.GivenWhenThen.*;
import static net.serenitybdd.screenplay.EventualConsequence.eventually;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.hasItem;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

@RunWith(SerenityRunner.class)
public class SearchByKeywordStory {


Actor anna = Actor.named("Anna");

@Managed
public static AppiumDriver<WebElement> herBrowser;

@Steps
OpenTheApplication openTheApplication;

@Before
public void annaCanBrowseTheWeb() {
    anna.can(BrowseTheWeb.with(herBrowser));
}

@Test
public void search_results_should_show_the_search_term_in_the_title() throws 
MalformedURLException, InterruptedException {
    String packagename = "com.facebook.katana";
    String URL="http://127.0.0.1:4723/wd/hub";
    String activityname = "com.facebook.katana.LoginActivity";
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("deviceName", "Galaxy S5");
    capabilities.setCapability("udid", "284596bb");
    capabilities.setCapability("platformVersion", "8.0");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("appPackage", packagename);
    capabilities.setCapability("appActivity", activityname);
    capabilities.setCapability("noReset", true);

    herBrowser= new AndroidDriver<WebElement>(new URL(URL), capabilities);
    herBrowser.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);        

    Thread.sleep(4000);             
    when(anna).attemptsTo(escribeNombre.yacasi());

}


}

这是另一个包含 Step 的“escribeNombre”类:

package com.Otherpackage.tasks;

import static net.serenitybdd.screenplay.Tasks.instrumented;
import static org.openqa.selenium.Keys.ENTER;

import org.openqa.selenium.WebElement;

import com.accenture.features.search.SearchByKeywordStory;
import com.accenture.ui.SearchBox;

import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Task;
import net.serenitybdd.screenplay.actions.Click;
import net.serenitybdd.screenplay.actions.Enter;
import net.thucydides.core.annotations.Step;

public class escribeNombre implements Task {

@Step("Abre la App y busca nombre")
public <T extends Actor> void performAs(T actor) {
    WebElement num3 =  

SearchByKeywordStory.herBrowser.findElementByClassName
("android.widget.EditText");    //Click a la barra de busqueda.      
    num3.sendKeys("Daniel Correa \n"); 



}    
   public static escribeNombre yacasi() {
       return instrumented(escribeNombre.class);
   }

}

这是 Serenity 报告,在步骤中不截取任何屏幕截图 https://i.imgur.com/uKkMGeE.png

任何人都可以帮助我吗?在网页中几乎没有关于将它与 appium 一起使用的文档,http://thucydides.info/docs/serenity-staging/#_running_tests_on_appium

如果你有 appium 的例子,对我有很大的帮助

感谢阅读,抱歉我的硬编码代码

【问题讨论】:

    标签: selenium selenium-webdriver appium browser-automation serenity-bdd


    【解决方案1】:

    您能否尝试在 serenity.properties 文件中设置 serenity.take.screenshots=AFTER_EACH_STEP。

    你可以关注这个关于screenshots are not found in the serenity report的帖子。

    这提供了有关获取报告屏幕截图的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 2017-12-22
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      相关资源
      最近更新 更多