java - 带有不同按钮的黄瓜场景大纲
问题描述
我想创建一个场景大纲,在每次运行时单击不同的按钮。我想这样做的原因是因为按钮产生相同的预期结果,所以我不能编写多个场景。
我想不出一个逻辑来处理这个问题。下面,请看我的代码。
// --- 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?
}
那么如何参数化这些按钮并单击它们呢?可能吗?
提前致谢。
解决方案
使用将按钮名称作为输入并单击相应按钮的方法来丰富您的 PageObject 怎么样?
public void clickOnButton(String buttonName) {
// Implement as you wish (if/switch/reflection...)
}
然后在你的 Cucumber 步骤中,你可以依赖这个方法:
@When("i click {string}")
public void i_click(String buttonName) {
pageObject.clickOnButton(buttonName);
}
注意:我将Cucumber Expressions用于更容易的步骤注释(自 Cucumber 5.x 起可用)
推荐阅读
- javascript - 缩放图像和标记
- ruby - 如何在 Ruby 0n 中调用不是类实例的函数
- debugging - 无法在 VSCode 中使用 gdb 进行调试
- android - onlocationChange 没有调用
- java - 通过 JNA 将击键发送到隐藏窗口
- python - 无法将_keys 发送到工具提示所涵盖的 webelement
- java - Swagger codegen typescript:模型名称与现有语言类型匹配
- c++ - C++ - 绑定()失败
- identityserver4 - Mtls 令牌请求失败并出现错误 - AuthenticationScheme:x509 被禁止
- git - Git:每个功能的分支与在同一个分支上一起工作真的不同吗?