java - 如何通过反射以所需/正确的顺序调用方法

标签 java selenium reflection

我是java和selenium的新手,并尝试使用java反射从B类执行A类中的方法(测试)。这些方法正在被调用并且也正在被执行。但问题是这些方法没有按照它们在类 A 中编写的顺序或所需的顺序执行。

例如。 A类依次有以下方法:

1. Login
2. Go to Page 1 --> do some activity
3. Go to Page 2 --> do some activity
4. Go to Page 4 --> do some activity
5. Logout

当通过类 B 中的反射调用这些函数时,它会将序列更改为:

4. Go to Page 4 --> do some activity
2. Go to Page 1 --> do some activity
5. Logout
1. Login
2. Go to Page 1 --> do some activity

因此,该方法会失败,因为第一步是登录,并且由于用户未登录,因此无法执行转到第 4 页 --> 执行某些 Activity 。

如何使方法以正确的格式执行。有什么命名格式吗?

A类:

    public void Login()  
        { 
            //Some action;
        }

        public void GoToHomepage() 
       {
          //Some action;
        }

        public void GotoPageOne(){
            //Some action;
        }


        public void GotoPageTow(){
            //Some action;
        }

        public void GotoPageThree(){
            //Some action;
        }

        public void GotoPagefour(){
            //Some action
        }

B 类(通过反射调用 A 类的方法)

    public static void main (String args[]){
    public static Method[] method;
    ClassA wa = new ClassA(driver);
            method=wa.getClass().getDeclaredMethods();
             for (int i=0;i<=method.length-1;i++){
             System.out.println(method[i].getName());
             method[i].invoke(wa);

这些方法的打印顺序与其执行顺序相同。

请提出建议,如果我做得不正确,请告诉我。

最佳答案

根据documentation结果数组未排序。 您可以使用Collections.sort() 对它们进行排序。

但一般来说,在声明顺序之后调用它们并不是一个好主意,因为它在任何时候都不灵活。按顺序更改源代码会导致问题。请改变你的方法。

关于java - 如何通过反射以所需/正确的顺序调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372390/

相关文章:

java - 如何使用 Java 和 EPSON TM-T88III 打印凭证

java - 测试容器在等待容器端口打开时超时,使用 Elasticsearch docker 镜像

python - 如何在 Python 中使用 Selenium 登录后保持 session ?

python - 由于 Python 和 Selenium 中的元音变音而出现错误

java - Java 中的 List<Foo> 类是什么?

javascript - 我怎样才能知道 javascript 对象具有的所有属性?

c# - 静态类中的匿名方法是非静态的?如何调用它?

java - Java session 超时

java - Servlet Hello World 错误 - 根本原因 : java. lang.ClassNotFoundException:

selenium - 通过 Xpath 获取元素 (Geb)