2016-07-27 16 views
1

Class1:Appium: Ich hv 2 Klasse, ClassA & ClassB.Ich führe diese 2 Klasse mit testng.xml file.Ich will wissen, dat für ClassB muss ich @Beforeclass setzen?

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); 

    } 

Class2:

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()); 
     } 

    } 

Problem: Zweite Klasse ist NullPointerException zeigt. Schlage mir eine Lösung vor.

+0

In Ihrer zweiten Klasse haben Sie nicht 'AndroidDriver' instanziiert ... das ist das Problem –

Antwort

0

Du AndroidDriver in LaunchApp initialisiert aber nicht diese Treiber Referenz in DrawerMenuTest passieren, wo Sie nur refrence Variable AndroidDriver mit null, dass die Ursachen für NullPointerException zu schaffen.

es zu überwinden Sie separate singlton Klasse erstellen sollten, die wie unten einzelne Instanz AndroidDriver zu jeder Klasse geben wird: -

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; 
    } 
} 

Jetzt können Sie wie unten dies in LaunchApp Klasse verwenden: -

public class LaunchApp { 

     AndroidDriver<WebElement> driver; 

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

Und wie unten in DrawerMenuTest Klasse verwenden: -

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()); 
     } 

    } 
} 

Hoffe es hilft .. :)

+0

Danke, jetzt funktioniert es –