Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有不同按钮的场景大纲_Java_Selenium_Automation_Cucumber_Gherkin - Fatal编程技术网

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());}