文檔概述
appium的原理網(wǎng)上介紹的比較清楚,但是配置過程比較復(fù)雜。在這里對簡單配置和使用appium運行一次計算器計算做簡單總結(jié)。
準備工作
appium的運行環(huán)境還是比較復(fù)雜的,依賴的東西比較多,現(xiàn)總結(jié)如下(windows環(huán)境):
1、首先安裝nodejs(安裝命令行版的appium用到);
2、java的jdk;
3、Android的sdk;
4、安裝appium server:
可使用命令行安裝,但是網(wǎng)絡(luò)波動比較大,失敗次數(shù)可能比價多:npm install -g appium
建議直接到:appium.io 下載安裝桌面版的服務(wù)端。
其他軟件有需要再進行安裝,簡單的運行計算器計算以上軟件足以。
代碼實現(xiàn)
使用以下命令獲取當前打開app的包名和activity名稱:
adb shell dumpsys window w |findstr \/ |findstr name=

使用adb device獲取設(shè)備id(java用)
java版本:
使用開發(fā)工具,導(dǎo)入三個jar包,分別是:

代碼如下:
public class Demo {
private AppiumDriver driver;
@BeforeClass
public void setup() throws Exception {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android"); // 指定測試平臺
cap.setCapability("deviceName", "0617f727007387cb"); // 指定測試機的ID,通過adb命令`adb
cap.setCapability("platformVersion", "4.4"); // 設(shè)置測試機的版本
cap.setCapability("appPackage", "com.android.calculator2"); // 將上面獲取到的包名和Activity名設(shè)置為值
cap.setCapability("appActivity", ".Calculator");
cap.setCapability("appWaitActivity", "com.android.calculator2.Calculator"); // A new session could not be created的解決方法
cap.setCapability("sessionOverride", true); // 每次啟動時覆蓋session,否則第二次后運行會報錯不能新建session
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); // 固定寫法
}
@Test
public void plus() {
// 獲取7
driver.findElementById("com.android.calculator2:id/digit7").click();
// 獲取+
driver.findElementById("com.android.calculator2:id/plus").click();
// 獲取3
driver.findElementById("com.android.calculator2:id/digit3").click();
// 獲取=
driver.findElementById("com.android.calculator2:id/equal").click();
}
@AfterClass
public void tearDown() throws Exception {
driver.quit(); //徹底退出程序
}
}
開啟服務(wù)端:

也可以使用命令行開啟(比較卡頓):appium

之后運行plus函數(shù),就會看到測試機自動啟動了計算器比計算出3+7的結(jié)果,同時服務(wù)器還會記錄日志。
python版本:
python環(huán)境需要安裝appium庫:
pip install Appium-Python-Client
編寫測試代碼:
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.find_element_by_id('com.android.calculator2:id/digit7').click()
driver.find_element_by_id('com.android.calculator2:id/plus').click()
driver.find_element_by_id('com.android.calculator2:id/digit3').click()
driver.find_element_by_id('com.android.calculator2:id/equal').click()
driver.quit();
開啟服務(wù)器,運行python腳本即可。
問題與小結(jié)
錯誤1:
在測試過程中發(fā)現(xiàn)錯誤:

這是由于appium的會話機制不能及時停止,導(dǎo)致第二次運行就會無法連接。
解決辦法:
1、桌面版服務(wù)器,在設(shè)置里面勾選:

2、命令行服務(wù)器,添加參數(shù):- -session-override即可
appium - -session-override
3、代碼中添加參數(shù)
cap.setCapability("sessionOverride", true); // 每次啟動時覆蓋session,否則第二次后運行會報錯不能新建session
錯誤2:

提示服務(wù)器未開啟。
錯誤3:

解決辦法:修改配置信息中的手機版本或者設(shè)備id
小結(jié)1:
在測試過程中發(fā)現(xiàn)即使手機鎖屏appium也可以直接進行解鎖運行4.4。在6.0上面就不可以了,服務(wù)器日志提示錯誤:

不可以在6.0的系統(tǒng)上自動解鎖了。