如何初始化驱动程序对象,以便所有类都可以使用它

时间:2019-02-03 10:24:26

标签: java appium serenity-bdd cucumber-serenity serenity-js

如何初始化驱动程序,以便所有类都可以使用它

大家好,

我正在使用Appium,Selenium和Cucumber在JAVA中编写一个测试自动化框架。

我首先在一个测试步骤文件中声明一个Appium驱动程序,然后根据所测试的应用程序将其强制转换为Android驱动程序或iOS驱动程序。

我需要一些帮助-我需要所有的类文件才能访问该驱动程序实例,但是我不确定如何执行此操作。该测试是从功能文件驱动的,并且某些测试步骤在不同的类文件中,因此它们如何才能全部访问该驱动程序实例?

谢谢 马特

3 个答案:

答案 0 :(得分:1)

您可以在可以完成所有其他配置设置的类中创建一个初始化方法,然后可以创建该类的实例以调用getDriver方法。
例如:

public class initialiseDriver{
private static AppiumDriver<MobileElement> driver;

public AppiumDriver<MobileElement> getDriver() throws IOException {
if (PLATFORM_NAME.equals("Android")) {
    // setup the android driver
} else if (PLATFORM_NAME.equals("iOS")) {
    // setup the ios driver
}
return driver;
  }
}

您可以仅在要使用驱动程序的地方调用此方法。理想情况下,应该通过在@ BeforeSuite / @ BeforeClass方法中调用此方法来初始化驱动程序,这样就不必每次启动脚本时都调用此方法,因为它会被@ BeforeSuite / @ BeforeClass隐式调用。

答案 1 :(得分:0)

您可以将 AppiumDriver 定义为静态

public class AppiumHelper(){
   public static AppiumDriver<MobileElement> driver;

   public void setupDriver(){
       //define your DesiredCapabilities       

       //initialize your driver

  }

然后您可以在测试方法中使用驱动程序,例如

public void test1(){
       MobileElement element= AppiumHelper.driver.findElementById("elements id");

}

答案 2 :(得分:0)

宁静 PageObject 类提供了内置的 getDriver()方法,您可以在要初始化驱动程序的任何地方调用该方法(最好在测试课程)。避免尝试在任何步骤定义/步骤库中初始化驱动程序(使用@Managed注释进行管理),否则会抛出:

空指针异常