Java 具有不同按钮的场景大纲
我想创建一个场景大纲,在每次运行时单击不同的按钮。我之所以想这样做,是因为按钮产生相同的预期结果,所以我不能编写多个场景 我想不出一个逻辑来处理这个问题。下面,请看我的代码Java 具有不同按钮的场景大纲,java,selenium,automation,cucumber,gherkin,Java,Selenium,Automation,Cucumber,Gherkin,我想创建一个场景大纲,在每次运行时单击不同的按钮。我之所以想这样做,是因为按钮产生相同的预期结果,所以我不能编写多个场景 我想不出一个逻辑来处理这个问题。下面,请看我的代码 // --- feature file --- Scenario Outline: click any button other than button1 and display label1 When i click "<buttontype>" Then i am pres
// --- feature file ---
Scenario Outline: click any button other than button1 and display label1
When i click "<buttontype>"
Then i am presented with label1
Examples:
| buttontype |
| button2 |
| button3 |
| button4 |
// --- Page Object ---
public class ButtonsObjects {
public ButtonsObjects(AppiumDriver driver) {
PageFactory.initElements(new AppiumFieldDecorator(driver), this);
}
// ------------------ locators ------------------
@AndroidFindBy(id = "btn1")
public MobileElement button1;
@AndroidFindBy(id = "btn2")
public MobileElement button2;
@AndroidFindBy(id = "btn3")
public MobileElement button3;
@AndroidFindBy(id = "btn4")
public MobileElement button4;
// ------------------ actions ------------------
public void clickButton1() {
button1.click;
}
public void clickButton2() {
button2.click;
}
public void clickButton3() {
button3.click;
}
public void clickButton4() {
button4.click;
}
}
// --- step definition ---
@When("^i click \"([^\"]*)\"$")
public void i_click(String arg0) {
// How do I handle this here?
}
/---功能文件---
场景大纲:单击按钮1以外的任何按钮并显示标签1
当我单击“”时
然后我得到了label1
示例:
|纽扣|
|按钮2|
|按钮3|
|按钮4|
//---页面对象---
公共类按钮对象{
公共按钮对象(AppiumDriver驱动程序){
initElements(新的AppiumFieldDecorator(驱动程序),this);
}
//---------定位器------------------
@AndroidIndby(id=“btn1”)
公共移动设备按钮1;
@AndroidIndby(id=“btn2”)
公共移动元素按钮2;
@AndroidIndby(id=“btn3”)
公共移动元素按钮3;
@AndroidIndby(id=“btn4”)
公共移动元素按钮4;
//-------行动------------------
公共作废clickButton1(){
按钮1.点击;
}
公共作废点击按钮2(){
按钮2.点击;
}
公共作废clickButton3(){
按钮3.单击;
}
公共作废clickButton4(){
按钮4.单击;
}
}
//---步骤定义---
@当(“^i单击”([^\“]*)\“$”)时
公共无效i_单击(字符串arg0){
//我怎么处理这件事?
}
那么我如何参数化这些按钮并单击它们呢?可能吗
提前感谢。用一种方法来丰富您的页面对象,该方法将按钮名称作为输入,然后单击相应的按钮,怎么样
public void点击按钮(字符串按钮名称){
//根据需要实施(如果/切换/反射…)
}
然后在你的黄瓜步骤中,你可以依靠这个方法:
@When(“我点击{string}”)
公共无效i_单击(字符串按钮名称){
pageObject.clickOnButton(按钮名称);
}
注意:我使用了更简单的步骤注释(从Cucumber 5.x开始提供)将代码分成不同的块会更容易阅读:)嗨,盖尔。你给我指出了正确的方向,我只是做了一些不同的事情。我在步骤定义中使用了switch语句,并在case语句中调用了click方法。@public void我单击(字符串arg0){重试{switch(arg0){case“button2”:buttonsObjects.clickButton2();break;默认值:log.info(“”;}catch(异常e){log.info(e.getStackTrace());}