2017-02-11 2 views
0
**Here are the classes i am using.** 

Die hier in der Homepage-Klasse verwendeten Aktionen funktionieren nicht. Ich rufe diese Klasse nach der Setup-Klasse.Ereignisse in separater Klasse können nicht ausgeführt werden

public class HomePage { 

     AndroidDriver driver; 

     public void switchToFlightBook() throws InterruptedException 
     { 

      WebElement allow2 = driver.findElement(By.xpath("//*[@resource-id='com.cleartrip.android:id/switcher_image']")); 

      allow2.click(); 
      System.out.println("allowed"); 
    } 
    } 

Dies ist Setup-Klasse, die ich verwende, um das Appium zu starten. Also, was auch immer Aktion wie klicken und alles, was ich hier benutze funktionieren gut, aber wenn ich die gleichen Aktionen in der Homepage-Klasse verwenden, funktioniert es nicht.

public class Setup { 

     AndroidDriver<WebElement> driver; 

     public void launchAppium() throws MalformedURLException { 
      File apkFilePath = new File("/Users/practo/Documents/workspace/cleartrip/apps/Cleartrip.apk"); 
      File app = new File(apkFilePath, "Cleartrip.apk"); 

      DesiredCapabilities capabilities = new DesiredCapabilities(); 
      capabilities.setCapability("device", "Android"); 
      capabilities.setCapability("deviceName", "Raj"); 
      capabilities.setCapability("platformName", "Android"); 
      capabilities.setCapability("autoAcceptAlerts", true); 
      capabilities.setCapability("autoDismissAlerts", true); 
      capabilities.setCapability("platformVersion", "6.0.1"); 

      driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 


      WebElement allow2 = driver.findElement(By.xpath("//*[@resource-id='com.android.packageinstaller:id/permission_allow_button']")); 
      allow2.click(); 

     } 
    } 



public class SearchPageTest { 
    @Test 
    public void VerifySearchPage() throws InterruptedException 
    { 
     HomePage homepage = new HomePage(); 
     homepage.switchToFlightBook(); 
    } 
    @BeforeTest 
     public void beforeTest() throws MalformedURLException 
    { 
      System.out.println("Starting setup"); 
      Setup setup = new Setup(); 
      setup.launchAppium(); 
      System.out.println("Setup is done"); 
     } 
    @AfterTest 
     public void afterTest() { 
      System.out.println("Test case completed"); 
     } 

    } 

Antwort

1

Sieht aus wie Sie nicht die driver Mitglied der HomePage Klasse zu initialisieren. Wenn das der Fall ist, geben sie nur als Konstruktor Argument Ihre HomePage Klasse:

public class HomePage { 
    AndroidDriver driver; 

    public HomePage(AndroidDriver driver) { 
    this.driver = driver; 
    } 

    public void switchToFlightBook() throws InterruptedException { ... } 
} 

Um sicherzustellen, dass die Arbeit mit dem Rest der Architektur machen Ihnen präsentiert, würden Sie den Treiber von der launchAppium Methode Ihrer Rückkehr müssen Setup Klasse, speichern Sie es in einem Mitglied der SearchPageTest Klasse und übergeben Sie es an, wo Sie die HomePage Klasse instanziieren.

+0

Das ist wirklich hilfreich. Ich konnte das Problem lösen. Vielen Dank –

Verwandte Themen