【发布时间】: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