附录:Ihv 2 class, ClassA & ClassB.我正在使用 testng.xml 文件执行这 2

本文关键字:testng xml 执行 文件 ClassB class Ihv ClassA amp 附录 | 更新日期: 2023-09-27 17:58:46

Class1:

public class LaunchApp {
    AndroidDriver<WebElement> driver;
    @BeforeTest
    public void Test1() throws MalformedURLException {
        DesiredCapabilities capability = new DesiredCapabilities();
        capability.setCapability("deviceName", "Android");
        capability.setCapability("platformName", "Android");
        capability.setCapability("platformVersion", "5.1.1");
        capability.setCapability("deviceName", "Samsung Galaxy On5");
        capability.setCapability("app",
                "D:''whatsapp.apk");
        capability.setCapability("PackageName",
                "com.movocado.socialbostonsports");
        capability.setCapability("ActivityName",
                "com.movocado.socialbostonsports.Activity.LogInSceen");
        try {
            driver = new AndroidDriver<WebElement>(new URL(
                    "http://127.0.0.1:4723/wd/hub"), capability);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

第2类:

public class DrawerMenuTest {
    AndroidDriver<WebElement> driver;
    @Test(priority = 1)
    public void DrawerMenuIcon() {
        WebElement drawerMenu = driver.findElement(By
                .id("com.movocado.socialbostonsports:id/rel_drawer"));
        try {
            drawerMenu.click();
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
        }
    }

问题:二等显示NullPointerException.给我一个解决方案。

附录:Ihv 2 class, ClassA & ClassB.我正在使用 testng.xml 文件执行这 2

您正在将AndroidDriver初始化为LaunchApp,但不会将此驱动程序引用传递到DrawerMenuTest中,您在其中仅创建AndroidDriver的引用变量null这是导致NullPointerException的原因。

为了克服它,您应该创建单独的singlton类,该类将为每个类提供单个AndroidDriver实例,如下所示:-

public class DriverInit {
    private AndroidDriver<WebElement> driver;
    private static DriverInit driverInit = null;
    public static DriverInit getInstance() {
        if (driverInit == null) {
            driverInit = new DriverInit();
        }
        return driverInit;
    }
    private DriverInit() {
         DesiredCapabilities capability = new DesiredCapabilities();
         capability.setCapability("deviceName", "Android");
         capability.setCapability("platformName", "Android");
         capability.setCapability("platformVersion", "5.1.1");
         capability.setCapability("deviceName", "Samsung Galaxy On5");
         capability.setCapability("app", "D:''whatsapp.apk");
         capability.setCapability("PackageName",  "com.movocado.socialbostonsports");
         capability.setCapability("ActivityName", "com.movocado.socialbostonsports.Activity.LogInSceen");

         this.driver = new AndroidDriver<WebElement>(new URL(
                "http://127.0.0.1:4723/wd/hub"), capability);
         this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
    public WebDriver getDriver() {
        return this.driver;
    }
}

现在你可以把它用到LaunchApp类中,如下所示:-

public class LaunchApp {
        AndroidDriver<WebElement> driver;
        @BeforeTest
        public void Test1() throws MalformedURLException {
            driver = DriverInit.getInstance().getDriver();
            //now do your stuff with this driver
        }
  }

并在DrawerMenuTest类中使用如下:-

public class DrawerMenuTest {
    AndroidDriver<WebElement> driver;
    @Test(priority = 1)
    public void DrawerMenuIcon() {
        //get driver instance first
        driver = DriverInit.getInstance().getDriver();
        WebElement drawerMenu = driver.findElement(By
                .id("com.movocado.socialbostonsports:id/rel_drawer"));
        try {
            drawerMenu.click();
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
        }
    }
}

希望它有帮助..:)