2017-01-10 6 views
1

Androidで動作するCordovaの上に基本的なハイブリッドモバイルアプリケーションビルドをテストしたいと思っています。私はそのためにApppiumを使用しました。私はtutorial videoに従って始めました。 Selenum、selendroid、javaクライアントの.jarファイルをダウンロードし、アプリケーションのビルドパスに追加しました。以下はAndroidハイブリッドモバイルアプリケーションをテストするAppium

私は機能コンテキストを取得することができ

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.Iterator; 
import java.util.Set; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 

import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.MobileElement; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.remote.MobileCapabilityType; 

public class AppiumTest { 

    public static void main(String[] args) throws MalformedURLException, InterruptedException { 

     URL serverAddress = new URL("http://0.0.0.0:4723/wd/hub"); 
     WebDriver driver = new AndroidDriver<MobileElement>(serverAddress, getDesiredCapabilities()); 

     try{    
      Set<String> contextNames = ((AppiumDriver<MobileElement>) driver).getContextHandles(); 
      for (final String contextName : contextNames) { 
        System.out.println(contextName); 
        if (contextName.contains("WEBVIEW_0")) { 
         Thread.sleep(3000); 
         driver.switchTo().window("WEBVIEW_0"); 
        } 
       } 

      //Change color to Red 
      driver.findElement(By.cssSelector("p.recieved")).click(); 
      Thread.sleep(2000); 

      //Change color to Red 
      driver.findElement(By.cssSelector("recieved")).click(); 
      Thread.sleep(2000); 

      driver.get("http//appium.io/"); 
      Thread.sleep(2000); 
     } 
     finally { 
      driver.quit(); 
     } 
     System.out.println("Driver "+driver); 
    } 

    public static DesiredCapabilities getDesiredCapabilities() { 

     DesiredCapabilities capability = new DesiredCapabilities(); 

     capability.setCapability(MobileCapabilityType.AUTOMATION_NAME, "selendroid"); 
     capability.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); 
     capability.setCapability("platformVersion", "4.4.4"); 
     capability.setCapability("deviceName", "Android-Dev"); 
     capability.setCapability("app", 
       "C:/Joseph/Appium/HybridProject/AppiumTest/platforms/android/build/outputs/apk/android-debug.apk"); 
     capability.setCapability("appPackage", "com.joseph.appiumtest"); 
     capability.setCapability("appActivity", ".MainActivity"); 

     return capability; 
    } 

} 

、私のコードです。

  • アンドロイド:4.4.4
  • Appium:1.6.3
  • セレン:3.0.1
  • ウィンドウ(driver.switchTo().window("WEBVIEW_0"))を切り替えるには、私はException in thread "main" org.openqa.selenium.WebDriverException: CATCH_ALL: java.lang.VerifyError: io/selendroid/server/model/SelendroidWebDriver

    バージョンのようなエラーを取得していますSelendroid:0.17.0

答えて

0

多くの試行を経て、Hybrid Mobile Application g Appiumは働いた。

基本的にCapabilitiesでは、パッケージ名とアクティビティ名を設定する必要はありません。代わりに、アプリケーションパッケージ名(.apk)のファイルパスを取得します。

 File app= new File("project/platforms/android/build/outputs/apk/android-debug.apk"); 
     DesiredCapabilities capabilities= new DesiredCapabilities(); 
     capabilities.setCapability("deviceName", "Android-Dev"); 
     capabilities.setCapability("platformVersion", "4.4.4"); 
     capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "MobilePlatform.ANDROID"); 
     capabilities.setCapability("app", app.getAbsolutePath()); 

次に、明示的にウィンドウをWEBVIEWに切り替えないでください。コンテキストを取得し、アプリケーション固有のWebviewの動的コンテキストを設定します。

 try { 
      Set<String> contextNames = ((AppiumDriver) driver).getContextHandles(); 
      for (String contextName : contextNames) { 
       System.out.println(contextName); 
       if (contextName.contains("WEBVIEW")) { 
        ((AppiumDriver<MobileElement>) driver).context(contextName); 
       } 
      } 
     } 
     catch(Exception e){ 
      e.printStackTrace();    
     } 

最後にドライバを設定して、操作を行います。

driver.findElement(By.xpath("//*[@id='login']")).click(); 
関連する問題