2017-05-04 10 views
0

Appium Testのページオブジェクトファクトリを使用しようとしていて、2ページをリンクする際に問題があるようです。Appiumのページオブジェクトファクトリ

import java.io.File; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 

import org.junit.After; 
import org.junit.Before; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.FindBy; 
import org.openqa.selenium.support.PageFactory; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.testng.annotations.Test; 

import Test2.AbstractPageObject; 
import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.pagefactory.AndroidFindBy; 
import io.appium.java_client.pagefactory.AppiumFieldDecorator; 
import io.appium.java_client.remote.MobileCapabilityType; 


public class Test1 { 

    public static class PageObject { 

     private final WebDriver driver; 


     @AndroidFindBy(uiAutomator = "new UiSelector().text(\"Sign in\")") 
     private WebElement element; 

     public PageObject(WebDriver driver) 

     { 
      this.driver = driver; 
      PageFactory.initElements(new AppiumFieldDecorator(driver, 10, TimeUnit.SECONDS), this); 
     } 

     public void click(){ 
      element.click(); 
     } 
    } 

    private PageObject po; 

    @Before 
    public void setup() throws Exception { 
     File appDir = new File("src"); 
     File app = new File(appDir, "app.apk"); 
     DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, ""); 
     capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator"); 
     capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); 
     capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath()); 

     po = new PageObject(new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities)); 


    } 

    @org.junit.Test 
    public void test() { 
     AbstractPageObject po = new AbstractPageObject (null); 
     po.test(); 
    } 

2番目のページ

import java.io.File; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 

import org.junit.Before; 
import org.junit.Test; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.FindBy; 
import org.openqa.selenium.support.PageFactory; 

import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.pagefactory.AndroidFindBy; 
import io.appium.java_client.pagefactory.AppiumFieldDecorator; 
import io.appium.java_client.remote.MobileCapabilityType; 

public class Test2 { 

    public static abstract class AbstractPageObject extends Test1 { 

      protected final WebDriver driver;  
      public AbstractPageObject(WebDriver driver) 
      { 
       this.driver = driver; 
       PageFactory.initElements(new AppiumFieldDecorator(driver, 10, TimeUnit.SECONDS), this); 
      } 
     } 


     public static class PageObject extends AbstractPageObject { 

      public PageObject(WebDriver driver) { 
       super(driver); 
      } 
      @FindBy(className="android.widget.ImageButton") 
      private WebElement c; 
      public void click1() 
      { 
       c.click(); 
      } 

      @FindBy(id = "com.payment.pay:id/btn_sign_in") 
      private WebElement d; 
      public void click11() 
      { 
       d.click(); 
      } 
      @FindBy(id="com.payment.pay:id/btn_forgotten_password") 
      private WebElement e; 
      public void click111() 
      { 
       e.click(); 
      } 
      @FindBy(className= "android.widget.ImageButton") 
      private WebElement f; 
      public void click1111() 
      { 
       f.click(); 
      } 

      @FindBy(id="com.payment.pay:id/btn_show_pass") 
      private WebElement g; 
      public void click11111() 
      { 
       g.click(); 
      } 
     } 
} 

以下の最初のページが2ページ目がエラーなしで大丈夫に見えます。最初のページでエラーが発生し、AbstractPageObjectをインポートできませんでした。

答えて

0

Java抽象クラスでは、をインスタンス化することはできませんが、サブクラス化することはできます。あなたの最初のページは確かにエラーを出すでしょう。詳細については、こちらをご確認くださいlink

+0

こんにちは、私はそれを解決する方法。私はリンクを見ましたが、それについてどうやって行くのか分かりません。これをさらに説明すると、最初のページでいくつかの編集を行うことで感謝します。ありがとうございました – Tessy