cucumber - Cucumber中不同页面对象的常用方法
问题描述
关于 Cucumber 中不同页面对象的常用方法的问题
有没有人致力于创建可用于黄瓜中不同页面对象的通用方法。
示例:单击方法。我在功能文件中指定页面对象(然后单击对象 o)。这又称为步骤定义。在步骤定义中,我们编写了一个通用的点击方法(object o.click())
我们还有一个单独的类,其中定义了所有页面对象(例如:对象 o 的 xpath)。现在的问题是如何将这些页面对象与click方法的通用步骤定义集成在一起。
如果这是可以实现的,我们只需要针对不同的对象(对象 o 到对象 b)更改特征文件中的步骤。单击方法将适用于所有不同的页面对象,我们只需在公共页面对象类中添加这些对象的 xpath 即可。
有人努力实现这一目标吗?
解决方案
它完全取决于您要设置的项目框架。
是的,有可能
例子:
页面对象类:
WebDriver driver = null;
private WebElement element = null;
private By By = null;
public PageOjectclass(WebDriver driver) {
this.driver = driver;
}
public static WebElement button_submit() throws Exception {
try {
element = driver.findElement(By.xpath("//h1[@class='txtCenter white ico30']"));
} catch (Exception e) {
AutomationLog.error("HomePageHeader Element not found");
throw (e);
}
return element;
}
普通类
public static void Customclick(WebElement e) {
e.click();
}
步骤定义类
@When("^testing$")
public void test() throws Throwable {
CommonClass.Customclick(PageOjectclass.button_submit());
}
只需注意传递 webdriver 初始化对象,使用构造函数等传递它们
推荐阅读
- html - 制作
- java - 为什么当我提交答案时,leetcode 将我的负数更改为 6?
- javascript - 按击键顺序返回实时搜索结果 - Django 和 JavaScript
- javascript - 在 Nuxt js 项目中重新加载页面后如何从 Firebase 获取用户信息?
- r - 从 `pivot_longer` 输出中删除自动生成的前缀
- unity3d - 在材质/游戏对象上制作两层
- python - Django Check 是一个模型字段是否定义了选择
- discord.py - 如何在一个命令中有多个参数 (discord.py)
- python - 如果我将 LSTM 输出与 CNN 输出连接起来会有意义吗?
- json - 在 Room DB 中保存多态性(抽象类)的最佳实践