Genymotion模擬器的安裝及腳本製做

在上一篇博文中,講到這一篇會介紹Genymotion的安裝方式。你們都知道,Genymotion是一個模擬器,或許會質疑了,直接鏈接真機就行了,爲什麼還要配置模擬器?我也是用真機實踐後,才選擇安裝的模擬器。緣由是:sdk自帶的uiautomatorviewer工具,不支持android8.0及以上的版本。社會在進步,移動設備更是高速發展,如今使用的手機不少都已高於這個版本。網絡上有相對的解決辦法,解決辦法在文末給出,但我仍是以爲麻煩,因此本身仍是選擇安裝模擬器。python

Genymotion配置

在下載genymotion時,須要有官網帳號,才能夠下載,因此能夠先註冊個帳號,自行註冊。android

Genymotion下載

下載地址:https://www.genymotion.com/download/,選擇對應系統下載對應的genymotion,以下圖所示:web

官方的genymotion操做手冊,能夠參考使用:https://docs.genymotion.com/latest/Content/01_Get_Started/Get_started.htmshell

Genymotion安裝

安裝過程那就更簡單了,打開下載的安裝文件,一路next,直至安裝成功,自動會安裝Oracle VM VirtualBox,該軟件是一款虛擬機,支持的平臺很普遍。在genymotion中,可使用該軟件配置網絡、系統等。windows

Genymotion添加手機系統

雙擊已安裝好的genymotion,進入到啓動頁,以下:瀏覽器

配置SDK

SDK是上一篇博文介紹配置的,還沒安裝好的,可參見上一篇博文,配置以下:網絡

SDK的地址,就是SDK的實際安裝地址,建議不要包含中文路徑。app

配置好了SDK後,就能夠下載各類型號的手機系統了,以下所示,新版的genymotion頁面,比老版本好看多了工具

安裝手機系統並啓用

如何安裝手機系統?選擇本身須要的手機型號,點擊右側按鈕處,點擊install便可,以下:ui

靜候,等待下載完,下載速度,看你們的網速了,大小也就一兩百兆左右。

下載完成以後,如何使用?點擊右側的start按鈕便可,以下:

start至關於就是咱們平常使用手機的時候,開機操做,系統啓動成功以後,出現以下界面:

說明genymotion模擬器就安裝好了,簡單幾步操做,安裝仍是很簡單的。

查看鏈接設備

在查看設備以前,須要啓用開發者模式,至關於,咱們真機在傳輸數據時,也是須要開啓開發者模式,並經過usb數據線鏈接電腦,完成數據的傳輸,是一個道理。

模擬器如何開啓開發者模式?一看圖就明白,以下圖所示:

進入到關於手機頁面,連續點擊版本號七次,便可開啓開發者模式,記住,必定是七次,不能少。

開啓了開發者模式以後,USB調試也須要開啓,跟真機操做同樣的,以下圖:

手機已經處於開發者模式,並容許調試了,那如何查看設備鏈接是否正常了?這就須要引用adb命令了,adb命令在安裝sdk的時候,就會自動安裝。今天不深刻分享adb命令的使用,只作簡單介紹。查看設備鏈接的命令是:

adb devices

輸入該命令後,出現以下圖所示,則說明有設備鏈接的

到這,genymotion模擬器就配置成功了,是否是很是的簡單。 

腳本製做

app安裝

針對自家產品開發腳本,那天然是須要在模擬器中安裝一個自家的app的,那如何安裝呢,小小一個命令便可完成,命令以下:

adb install C:\Users\leo\Desktop\k.apk

adb依然是以前所提到的adb命令;install顧名思義,安裝的意思;後面的路徑則是apk包存放的位置。執行上述命令後,出現以下圖所示,則說明app安裝成功:

app卸載

剛描述了app的安裝,那卸載又是如何操做呢?有些朋友可能會想到命令adb uninstall C:\Users\leo\Desktop\k.apk麼?命令是這個,但卻不是接路徑了,須要對應app的包名。

包名如何獲取,在模擬器中打開你將要卸載的app,輸入命令:

adb shell dumpsys window w |findstr \/ |findstr name=

便可得到對應app的包名了,卸載app的命令則是:

adb uninstall com.XXX.XXX

執行該命令後,模擬器中對應的app則會被卸載。

元素定位

元素定位,跟UI自動化的定位差很少,也無非就是id、name、xpath那些,主要是看本身如何使用,可以簡單卻又準確無誤的定位到元素。

元素定位,咱們藉助sdk中自帶的工具:uiautomatorviewer.bat,工具路徑在:D:\android-sdk-windows\tools文件夾下,具體路徑看我的安裝sdk的路徑,我只是個舉例。

先在模擬器中打開對應的app,再打開uiautomatorviewer.bat工具,在工具中則會看到app對應的界面,以下所示:

 

從上圖可看出,左側面板就是app對應的界面,右側則是元素的層級顯示,鼠標點擊對應的元素,右側就會展現對應的詳情路徑,即可實現元素的定位。該工具相似於火狐瀏覽器中的firebug工具同樣,是便於進行元素提取,進行元素定位的。

代碼示例

寫到這,我已按耐不住的想上一段本身曾幾什麼時候的一段線性代碼,很普通的一段線性代碼。實現一個簡單的登陸操做,以下:

沒有斷言,沒有特殊邏輯,不喜勿噴,基於python剛入門寫的。作爲新入門的朋友來講,能夠參考一下,若是沒有參考價值,那忽略便可。

import selenium
import time
from appium import webdriver


desired_caps = {
    'platformName': 'Android',
    'platformVersion': '4.4.4',
    'deviceName': 'S5',
    'appPackage': '',   #包名
    'appActivity': '',    #app入口
    'udid': '192.168.66.101:5555',  # genymotion設備
    'noReset': 'true',
    'unicodeKeyboard': 'True',
    'resetKeyboard': 'True',
}
print('selenium version = ', selenium.__version__)

driver = webdriver.Remote('http://192.168.1.103:4723/wd/hub', desired_caps)
print("服務啓動成功")
time.sleep(3)


account = driver.find_element_by_id('id/rel_content')
account.find_element_by_id('id/edit_acount')
driver.press_keycode(61)
print("換行操做")

if driver.find_element_by_id('id/img_clear_acount'):
    clr_account = driver.find_element_by_id('id/img_clear_acount').click()
    print("帳號清除成功")

account.send_keys('10086')
print("帳號輸入完畢")
time.sleep(2)

driver.press_keycode(61)
print("換行操做")

password = driver.find_element_by_id('id/rel_content')
password.find_element_by_id('id/edit_pass')
password.send_keys('123456')
print("密碼輸入完畢")
driver.find_element_by_xpath('//android.widget.TextView[@text="登 錄"]').click()
print("點擊登陸按鈕")


print('登陸成功')
time.sleep(5)
driver.quit()

代碼寫到這,想要運行,還須要基於appium的配合,纔可以運行起來。上述代碼及appium的操做,下篇博文將繼續分享。

問題總結

在博文一開始時,就講到遇到的一個問題,如今來講下解決方式。

在使用真機鏈接,進行元素定位時,出現以下報錯:unexpected error while obtaining UI hierarchy

詢問度娘發現,該問題緣由是:android 8.0致使的問題,須要更新 uiautomatorviewer 源碼才能解決。我的還不會更新源碼,因此繼續度娘,發現了一個解決辦法,以下:

1.在D盤根目錄下建立app.png文本文件
2.在E盤根目錄下建立app.uix文本文件
3.執行如下adb命名:     
                  adb shell uiautomator dump /sdcard/app.uix
                  adb pull /sdcard/app.uix E:/app.uix
                  adb shell screencap -p /sdcard/app.png
                  adb pull /sdcard/app.png D:/app.png
4.運行uiautomatorviewer.bat,導入文件
5.再次鏈接手機問題獲得瞭解決
執行adb命令以下所示:

運行uiautomatorviewer.bat,導入文件,以下所示:

使用如上步驟,便可實現元素定位了,以前我說過,我不太喜歡用這種方式,是由於,每切換一個頁面,則須要重複上述步驟,以爲麻煩,因此就藉助模擬器來進行元素定位了,這只是我我的喜愛罷了。命令一行一行的執行,很繁瑣,不過能夠寫個bat文件腳本,一鍵執行便可。

但願對有須要的朋友有所幫助,文中有描述不對的地方,歡迎批評指正。

 

本文僅表明做者觀點,系做者@溫一壺清酒發表。
歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/
相關文章
相關標籤/搜索