使用Serenity BDD selenium JUnit进行自动化。我在cucumberBDD方面有经验,我们可以轻松共享步骤。我想在serenity中实现同样的目标。为了简单起见,假设我们有一个登录页面和一个后续页面,上面写着名称检查页面。我为这两个页面创建了单独的POM,然后创建了相应的步骤定义(@步骤),并希望在单个脚本中使用这两个步骤定义类中定义的@步骤。这可以做到吗?
>
我尝试过使用这个方法,但浏览器会在步骤(特别是步骤类)完成后立即关闭,因此其他步骤不会执行,并给出异常
public class AA_NameCheck{
@Managed(driver="edge",clearCookies=ClearCookiesPolicy.BeforeEachTest)
WebDriver driver;
@Steps
StepsLoginPage stepL;
StepsNameCheckPage stepN;
@Test
public void NameCheck_ValidUser() throws InterruptedException{
stepL.Launch();
stepL.Login_ValidCredential();
stepN.Enter_NameDetails();
}
}
在< code >步骤1之后。Login_validCredentials()完成浏览器关闭,因此< code>Name_EnterDetails()上的方法出现异常
只是想知道任何其他方法是可能的共享步骤?
分享POM和步骤定义,请看一看
名称检查页面的POM:
public class NameCheckPage extends PageObject {
public NameCheckPage(WebDriver driver) {
super(driver);
}
Actions action=new Actions(getDriver());
@FindBy(id="xx")
public WebElementFacade EngName;
@FindBy(id="xx")
public WebElementFacade SecondEngName;
@FindBy(id="xx")
public WebElementFacade ThirdEngName;
@FindBy(xpath="xx")
public List<WebElementFacade> NameCheckBtns;
@FindBy(id="xx")
public WebElementFacade PreliminaryStatusChk;
public void Enter_FirstEngName() {
EngName.isVisible();
EngName.sendKeys("xylon");
}
public void Enter_EnglishName(String name) {
EngName.isVisible();
EngName.sendKeys(name);
}
public void Enter_SecEngName() {
SecondEngName.isVisible();
SecondEngName.sendKeys("xylonone");
}
public void Enter_ThirdEngName() {
ThirdEngName.isVisible();
ThirdEngName.sendKeys("xylontwo");
}
public void Enter_FirstEngNameone() {
EngName.isVisible();
EngName.sendKeys("xylo");
}
public void Enter_SecEngNameone() {
SecondEngName.isVisible();
SecondEngName.sendKeys("xyloone");
}
public void Enter_ThirdEngNameone() {
ThirdEngName.isVisible();
ThirdEngName.sendKeys("xylotwo");
}
public void AddCompany() {
action.click(NameCheckBtns.get(1)).perform();
}
public void AddSecondCompany() {
action.click(NameCheckBtns.get(2)).perform();
}
public void PrelimCheck() throws InterruptedException {
for(WebElement btns:NameCheckBtns) {
System.out.println("Buttons :"+btns.getText());
}
System.out.println(NameCheckBtns.get(4).getText());
JavascriptExecutor js=(JavascriptExecutor)getDriver();
js.executeScript("arguments[0].scrollIntoView();", NameCheckBtns.get(4));
action.click(NameCheckBtns.get(4)).perform();
PreliminaryStatusChk.isVisible();
System.out.println(PreliminaryStatusChk.getText());
}
登录页面的步骤定义:
public class StepsLoginPage extends ScenarioSteps {
private static final long serialVersionUID = 1L;
LoginPage login;
@Step
public void Launch() {
login.Launch();
}
@Step
public void Login_ValidCredential() {
login.Launch();
login.Enter_Username();
login.Enter_Password();
login.Click_LoginBtn();
//tried using return but of no help the browser still closes
//return new NameCheckPage(login.getDriver());
}
名称检查页面的步骤定义:
public class StepsNameCheckPage extends ScenarioSteps{
private static final long serialVersionUID = 1L;
NameCheckPage namechk;
@Step
public void Enter_NameDetails() throws InterruptedException {
namechk.Enter_FirstEngName();
namechk.AddCompany();
namechk.Enter_SecEngName();
namechk.AddCompany();
namechk.Enter_ThirdEngName();
namechk.PrelimCheck();
}
测试:
public class AA_NameCheck{
@Managed(driver="edge",clearCookies=ClearCookiesPolicy.BeforeEachTest)
WebDriver driver;
@Steps
StepsLoginPage stepL;
StepsNameCheckPage stepN;
@Test
public void NameCheck_ValidUser() throws InterruptedException{
stepL.Launch();
stepL.Login_ValidCredential();
stepN.Enter_NameDetails();
}
}
当您在注释@Steps
中使用两个带有步骤的类时,您应该有:
@Steps
StepsLoginPage stepL;
@Steps
StepsNameCheckPage stepN;
在您的情况下,第二类为空。
您显示的代码应该可以正常工作,因此我怀疑问题在其他地方。
我正在寻找在测试用例中添加 SOAP 请求测试步骤,从不同的 TestSuite 和测试用例,我已经对部分进行了编码以添加 Groovy 脚本以满足相同的要求,但无法添加 SOAP 请求测试步骤。有什么帮助吗? 以下是我的代码:
我设置了以下测试用例: 我想使用Groovy脚本测试步骤获得SoapRequest测试步骤的状态。 它可以如下所示完成: 但是我不想通过脚本运行TestStep,而只是使用soapui testrunner。在datasink测试步骤中,我可以使用这个: 不幸的是,上述方法在GroovyScript TestStep中不起作用 有什么想法吗?
主要内容:1. 背景研究,2. 收集数据,3. 设定业务目标,4. 构建假设,5. 创造变体/假设,6. 运行变体,7. 分析数据A/B测试包括一系列必须按顺序进行的过程,以得出一个现实的结论。 在本章中,我们将详细讨论可用于在任何网页上运行测试的A/B测试过程的步骤 - 1. 背景研究 背景研究在A/B测试中起着至关重要的作用。 第一步是找出网站的跳出率。 这可以通过几种广泛使用的背景研究工具(如Google Analytics等)的帮助完成。 2. 收集数据 来自Google Analyti
步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:登录后可在“开发者中心”查看对应的接口权限。 步骤二:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js 如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://r
我对Spring批处理框架相当陌生。 我在一个作业中创建了两个步骤(我们称之为步骤1和步骤2)。我想把它们并行运行。不仅如此,step2的IteamReader还应该使用step1的itemwriter。 我的第一个问题是,在Spring批量中是否有可能做到这一点?如果是,怎么做? 其次,如果这不可能,还有什么工作可以做呢? 谢了。
步骤1和步骤2是需要在安装网站上运行的安装步骤,并且只需要在chrome上运行一次来为场景创建安装。一旦完成,那么步骤3和步骤4需要在客户端网站上的不同浏览器/设备(即Chrome,Firefox,Safari,Mobile)上进行检查。 我的框架是用Cucumber和JavaScript编写的。我如何在cucumber中实现这一点,场景的一些步骤只在chrome上运行一次,其余的步骤应该在不同的