天天看點

appium 整理

學習 appium 也有一段時間了,基本的操作也基本都能搞好,但是 混合頁面H5 我沒能搞定 先不管了,先把自己遇到的東西記錄下來。

1.首先是環境問題  那先看看 安裝好後的appium,在指令行輸入appium-doctor 都有些什麼

ANDROID_HOME 是需要配置的android環境 sdk,相關請自行百度 教程很多 主要2步:1.下載下傳sdk 2.配置環境變量。

測試 在指令行輸入:adb,會出現很多資訊說明成功

---------------這個愉快的分隔符-----------

JAVA_HOME 那這個是需要配置的java環境,也是兩步:1.下載下傳sdk 2.配置環境變量。

測試 在指令行輸入:javac,會出現很多資訊說明成功

-------------------------

下面的3個 都是 sdk中的運作檔案 adb.exe\android.bat\emulator.exe,因為這幾個 appium要用是以需要放到系統環境path中,上面2個如果能配好這個也就輕輕松了

appium 整理

2.相關的環境配置好,然後就是需要 下載下傳 appium并且安裝了,不具體說了有兩種方式,網上相關教程也行多請百度(其實挺讨厭百度的,現在基本都是bing要不就是翻牆)

其實環境和安裝appium,都說不是難,最讓人頭疼的就是 第一次成功運作第一個小demo

這裡先不說代碼,先看看項目結構。

appium 整理

src 下是就是我們寫腳本的地方

下面的3個都是 需要的jar包支援,

第一個appium 是很多的jra(等下具體說),

第二個三個是運作java程式必須的,我之是以加了1.7和1.8兩個是因為 運作appium 時提示缺少1.8的jre,但是1.7的又不能去掉。是以我就照着做了,沒特别的意思

最後一個apps 是待測的app

appium 整理

主要需要說的就是appium 這個jar包裡有些什麼到底怎麼配,配怎樣的額版本才能正常使用

appium 整理

簡直了,是不是很多,而且裡面還有selenium 相關的jar包。比擔心我 來說

http://www.cnblogs.com/puresoul/p/4696825.html

額,篇文章不錯的大家可以看看

appium 整理

可能由于這片文章太久,appium做了改動,是以 我當初按照他的類路去添加并沒有成功

下載下傳位址是一樣的,我經過了好久的擺弄,然後找到很合适的一個版本配合

selenium-server-standalone-2.48.2.jar(這個用最新的應該就可以)

selenium-2.48.2(lib整個檔案夾+selenium-java-2.48.2.jar+selenium-java-2.48.2-srcs.jar)

java-client-4.1.2.jar

上面就是appium jar包内的全部東西

我用的是java,大家可以下載下傳相應的

appium jar包下載下傳:https://search.maven.org/#search%7Cga%7C1%7Cg%3Aio.appium%20a%3Ajava-client

appium 整理

selenium jar包下載下傳:http://docs.seleniumhq.org/download/(這個,需要翻牆)

appium 整理

到這裡就可以試着寫自己的第一個代碼了,還是參照上面說的那片文章http://www.cnblogs.com/puresoul/p/4696825.html,

也有相應的例子可以下載下傳

3.我遇到的錯誤資訊

-----------------------------------------------------------------

org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Bad app: D:\eclpse_workspase\appiumTest\apps\xxx.apk. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name. cause: Error: Error locating the app: ENOENT, stat 'D:\eclpse_workspase\appiumTest\apps\xxx.apk') (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 166 milliseconds

Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'

System info: host: 'SKY-20170223KZD', ip: '192.168.1.108', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'

仔細查路徑

-------------------------------------------------------------------

org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "D:\adt_sdk_eclpse\android-sdk-windows\platform-tools\adb.exe -s adb server version (31) doesn't match this client (39); killing...

 wait-for-device"

error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每個套接字位址(協定/網絡位址/端口)隻允許使用一次。 (10048)

This application has requested the Runtime to terminate it in an unusual way.

Please contact the application's support team for more information.

could not read ok from ADB Server

* could not start server *

) (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 20.76 seconds

Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'

System info: host: 'SKY-20170223KZD', ip: '192.168.1.108', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'

查找端口是否被占用

------------------------------------------------------------------

org.openqa.selenium.SessionNotCreatedException: appium could not start a new session.

檢查 app的名稱和路徑

4.appium 相關設定

appium 整理

1.是被測app的路徑

2.是被測app的 包名

3.是被測app的啟動主activity名,這兩個 可以問開發 或者(以下5個截圖,a-e)

appium 整理

a.下載下傳apktool,百度去下

appium 整理

b.進入到apktool,然後 找到appt.exe,并且把 被測app複制進來。此刻注意目前的位置複制下來 下一步用

appium 整理

c.進入指令框,進入到 剛剛複制的那個路徑下,然後 輸入:aapt dump badging *.apk(這個為app的名字),點選回車

appium 整理

d.可以看到這個就是包名

appium 整理

e.在很長的下拉後,這個就是啟動主activity名

ok,接着說app 裡面的4和5

4.勾選

No Reset 後,每次由appium啟動app,就不會每次都重新安裝了

或者代碼中 // 不要每次運作都安裝app

capabilities.setCapability("noReset", true);

capabilities.setCapability("fullReset", false);

5.這裡 隻需要改動 PlatormVersion(被測app 安裝的手機android版本或模拟器的andorid版本)

5.最後就是代碼問題了

 如果能運作起來前面那篇文章的demo,下面就不陌生了

@Before

public void Sliding() throws Exception {

// 設定apk路徑 Property性質、财産

File classpathRoot = new File(System.getProperty("user.dir"));

File appDir = new File(classpathRoot, "apps");

File app = new File(appDir, "HJQ_7_v1.2.2__360.apk");--------app名稱一定不要弄錯

// 設定自動化測試參數 Capability能力

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

capabilities.setCapability("platformName", "Android"); // platform 平台

capabilities.setCapability("deviceName", "Android Emulator");

// 設定android系統版本

capabilities.setCapability("platformVersion", "4.4"); ----------之前說的那個手機或模拟器的版本号

// 設定apk路徑

// capabilities.setCapability("app", app.getAbsolutePath());---------隻用上面那種方式就可以,這個我也不怎麼懂

// support(支援) Chinese

capabilities.setCapability("unicodeKeyboard", "True");

capabilities.setCapability("resetKeyboard", "True");

// no need sign(是否重簽名)

capabilities.setCapability("noSign", "False");

// 不要每次運作都安裝app

capabilities.setCapability("noReset", true);

capabilities.setCapability("fullReset", false);

// 設定app的主機包和主類包

capabilities.setCapability("appPackage", "com.xxx.q");

capabilities.setCapability("appActivity",

"com.huxxxxxxx.Activity");

// 初始化

driverSliding = new AndroidDriver<AndroidElement>(new URL(

"http://127.0.0.1:4723/wd/hub"), capabilities);

}

其實最主要的就是定位問題了

通過 name,classname,id,xpath等等,網上很多教程也很詳細,這個需要多練習,給被測的app找到合适的定位方式(我多用xpath)

網上也有大神做了,一個uiautomatorviewer.bat 不需要自己定位 很友善,可以百度下載下傳試試看,但是不建議新人使用。

最後 就是好好學習java,做好封裝什麼的 便于複用

加油!

嘻嘻嘻,最後呢 又是 碎碎念

樹頂站着一隻貓,格子花紋的貓。它像是在看着什麼,又像是隻忘着遠方。 

樹腳下蹲着一隻二哈,蠢的不行,哈哈着舌頭望着這隻貓。 

貓知道這隻狗,整日淌着口水,明明蠢的不行還表情嚣張色迷迷的張望。 

貓,之前也隻是一隻蠢貓。喜歡玩線團,踩書紙,追蝴蝶和摔跟頭。 

直到它見到一隻站在樹頂的豬。 

豬,之前更是一頭蠢豬。它沒想過竟然真的能沿着彩虹走到這樹頂。 

樹每天瘋漲,沒想過那一天真的能觸到彩虹,但是上面卻走來一頭豬。 

看吧 看吧,又是這樣,石頭在二哈的爪子下叽叽的叫。 

老夫當年怎麼就孕育出這樣一顆樹 

不如吸取日月精華也化個那石猴,踏南天碎林霄,打他個十萬天兵養上一山猴子猴孫。 

不比這一天到晚 一動不能動 看那唠甚子的紫霞來的快活自在。 

又閉上眼,等着貓下樹,傍晚來。

繼續閱讀