2017-05-04 60 views
0

我想使用頁面對象工廠的Appium測試,似乎有問題鏈接兩個頁面在一起。頁面對象工廠與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(); 
    } 

第二頁

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

第二頁看起來還好沒有錯誤。該錯誤發生在第一頁並且無法導入AbstractPageObject。

回答

0

在Java中抽象類不能實例化,但它們可以被子類化。你的第一頁肯定會給出一個錯誤。欲瞭解更多詳情link

+0

嗨維諾德,我該如何解決它。我已經看過鏈接,但不知道如何去做。如果您通過在第一頁中進行一些編輯來進一步解釋這一點,我將不勝感激。謝謝 – Tessy