即使我们有很多方法,我们是否应该在 selenium 关键字驱动框架中执行一个操作 class?

Should we have one action class in selenium keyword driven framework even though we have a lot of methods?

根据我的理解,关键字驱动框架是,我们为我们执行的每个操作创建一个关键字,并使用这些关键字在 excel 中编写测试用例。 例如,打开浏览器、输入用户名、密码、点击登录按钮等,我们为每个操作创建一个关键字,并为每个关键字创建一个方法,并将所有这些方法存储在 class 中,如 actionmethods() 等。

我们使用java反射class来调用这些方法。

如果我们少了没有。应该没问题的方法。我正在做一个小项目,我得到了大约 200 个关键字。所以我必须在这里写200个方法。我应该将所有这些方法存储在一个 class 中吗?

如果我有 1000 个关键字(对于一个大项目)怎么办?

如果我根据页面创建单独的文件分组关键字方法,它会变得非常复杂。如果我们只使用一个 class 来保存所有方法,有人可以解释一下吗?

谢谢。

像我们在页面对象模式中所做的那样,为每个页面维护单独的关键字方法class。

在调用关键字时,我们可以指定 class 名称以及方法名称。例如,LoginPage.login

例如,如果您维护包 com.myproject.test.pages 下的页面 class 您可以更改调用的反射代码,

public Object invokeKeywordMethod(String keywordName)
        throws InvocationTargetException, IllegalAccessException, InstantiationException {
    String[] keywords = keywordName.split("\.");
    if (keywords.length == 1)
        throw new Error("Invalid keyword: " + keywordName + ". The keyword must be as ClassName.methodName");
    String className = keywords[0];
    String methodName = keywords[1];
    Class<?> pageClass = getPageClass(className);
    Method method;
    try {
        method = getPageClass("").getDeclaredMethod(methodName);
    } catch (NoSuchMethodException e) {
        throw new Error("The keyword method '" + methodName + "' is not found in the class");
    }

    return method.invoke(pageClass.newInstance());
}

private Class<?> getPageClass(String className) {
    Class<?> pageClass = null;
    try {
        pageClass = Class.forName("com.myproject.test.pages." + className);
    } catch (ClassNotFoundException e) {
        throw new Error(className + " not found in package 'com.myproject.test.pages' ");
    }
    return pageClass;
}