Selenium Java - 如何从不同的 class 调用 class

Selenium Java - How to call a class from different class

我是 Selenium 的新手,我需要任何可以得到的帮助。我会尽量提供详细信息。我需要从第二个 Class 调用第一个 Class (ImagesRepo) 中的对象 imgBtn01imgBtn02。我想把它分开的原因,我希望所有的图像对象都来自不同的class。

Selenium + Sikuli > Java > Maven 项目

第一个 Class 来自不同的包

public class ImagesRepo {

    public void imageRepoApp() {  

    //Images assigning object
     Screen screen = new Screen();
     Pattern imgBtn01 = new Pattern("/Images/Btn_ButtonName01.png");
     Pattern imgBtn02 = new Pattern("/Images/Btn_ButtonName02.png");
}

第二个 class,来自不同的包:

public class testBed {


    public static void callRepoImages() throws FindFailed {
        ReporImages();
    }


    @Test       
    public static void ReporImages() {
        Screen screen = new Screen();
        screen.click(imgBtn01); //the imgBtn01 has a redline
        screen.click(imgBtn02); //the imgBtn02 has a redline
        return;
    }
}

这看起来更像是如何在 java 类型的问题中编码。

一种方法是为第一个 class 创建 public 变量,然后从第二个 class.

获取这些变量

将第一个 class 更改为类似的东西;

public class ImagesRepo {

    public Pattern imgBtn01;
    public Pattern imgBtn02;

public void imageRepoApp() {  

//Images assigning object
 Screen screen = new Screen();
 imgBtn01 = new Pattern("/Images/Btn_ButtonName01.png");
 imgBtn02 = new Pattern("/Images/Btn_ButtonName02.png");
}

然后您可以在 Second class 中获取这些 public 变量作为;

public class testBed{


    public static void callRepoImages() throws FindFailed {
        ReporImages();
    }


@Test       
public static void ReporImages() {
    ImagesRepo imgrepo = new ImagesRepo();
    imgrepo.imageRepoApp();   //So that pattern assignment is done.
    Screen screen = new Screen();
    screen.click(imgrepo.imgBtn01); //the imgBtn01 has a redline
    screen.click(imgrepo.imgBtn02); //the imgBtn02 has a redline
    return;

}
}

此外,在 class testBed

中适当地添加 class ImagesRepo 的导入

代码未经测试。

有更好的方法来做到这一点,但这似乎是对代码进行最少更改的方法。