運行Appium碰到的坑們


 

 

運行Appium的時候,碰到的那些坑

1. java命令會出現error:could not open ...jvm.cfg

  出現這種情況大多是因為電腦上之前安裝過JDK,卸載重裝之后,運行java命令會出現error:could not open ...jvm.cfg的錯誤。

    打開系統環境變量,查看PATH,會看到諸如此類的配置信息:

    %SystemRoot%\system32;%SystemRoot%;......%JAVA_HOME%\lib;%JAVA_HOME%\bin

   

    原因:在運行java時,默認會按照PATH中設置的路徑去尋找java.exe文件,按上述PATH信息首先會去找%SystemRoot%\system32目錄下的文件,而該目錄下的java.exe對應的jdk安裝目錄已被卸載,自然會出現文件打不開的提示。

 

    看到這兒或許你明白了,簡單的解決方法有二:

    1、直接刪除system32目錄(或windows目錄,視PATH中的路徑設置而定)下的java.exe(其實看下文件日期就會發現,該文件與當前安裝的JAVA bin目錄下的文件日期不一樣);

    2、直接將%JAVA_HOME%\bin;放在PATH路徑的最前面(知道為什么了吧);

 2. 錯誤信息: UiAutomator quit before it successfully launched

  網上很多信息,但是最終自己的解決方法竟然是重啟手機。

3. 初始化AppiumDriver的時候,使用java-client 2.0之前的版本。2.0之后的版本有初始化問題,沒有找到合適的解決辦法。

4. 獲取app的啟動activity

 1) 把當前路徑指向sdk的build-tools目錄,並把apk文件放進去:執行以下命令: .\aapt dump badging xxx.apk命令獲取包內信息。注意,啟動類名稱一個字母都不能錯

注意launchable-activity屬性

2)沒有apk,應用已經安裝到手機或虛擬機中。可以使用logcat命令

.清除logcat內容,使用命令adb logcat -c

.啟動logcat,使用命令adb logcat ActivityManager:I *:s

 

 5. 獲取元素屬性 (monitor.bat 或uiautomatorviewer.bat)

打開monitor之后,就能通過點選找出頁面元素的屬性了。

 

6. 啟動測試時,遇到permission to start activity denied,一般是啟動首頁的activity設置有誤。

 

Android的實例

package com.glen.demo;

import io.appium.java_client.AppiumDriver;
//import io.appium.java_client.android.AndroidDriver;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

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

public class ContactsTest {

private AppiumDriver driver;

@Before
public void setUp() throws Exception {
//apk放置的位置
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "app_F_1.3.0.apk");

//初始化
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android"); //平台名稱
//capabilities.setCapability("deviceName", "emulator-5554");
capabilities.setCapability("deviceName", "HTC D820mu"); //手機的名字
capabilities.setCapability("platformVersion", "4.4"); //Android 版本
capabilities.setCapability("app", app.getAbsolutePath()); //設置app路徑

capabilities.setCapability("appPackage", "com.kuaichengwuliu"); //app的包名
capabilities.setCapability("appActivity", ".activities.XJWelcomePage");//app的啟動頁面,一般是AndroidManifest.xml里面的第一個activity
//實例化
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
if(driver.isAppInstalled(null))
driver.removeApp(null);
else
driver.installApp(app.getAbsolutePath());
driver.launchApp();
}
@Test
public void addContact(){
// To Do List
}

@After
public void tearDown() throws Exception {
driver.quit();
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM