1.Appium下載
在以下操作之前,還有一個(gè)重要的工具要裝倔韭,node.
一路安裝下去就成功了拱层。
appium 有兩種形式的安裝成玫,一種是通過(guò)npm 安裝appium server,一種是通過(guò)直接下載AppiumForwindow安裝包,直接安裝速种。最簡(jiǎn)單直接的方式就是第二種得哆,因?yàn)榈谝环N你會(huì)遇到各種各樣的問(wèn)題,當(dāng)然了哟旗,只要堅(jiān)持不懈,也是可以成功安裝的栋操,親測(cè)闸餐。
我們就直接來(lái)第二種簡(jiǎn)單粗暴的。
下載地址
一路下一步矾芙,安裝成功即可
這個(gè)時(shí)候舍沙,配置以下環(huán)境變量,方便以后使用剔宪,如果你只是簡(jiǎn)單的使用圖形化操作拂铡,可以不配置環(huán)境變量。當(dāng)然了配置環(huán)境變量也很簡(jiǎn)單葱绒,將
C:\Program Files (x86)\Appium\node_modules.bin添加到系統(tǒng)變量的Path變量中即可感帅。
測(cè)試appium的狀態(tài):
執(zhí)行命令
adb devices
可以查看當(dāng)前已連接到的設(shè)備。
2.夜神模擬器下載
android帶有的模擬器也是可以用的地淀,但不知為何失球,運(yùn)行的速度有些無(wú)法接受,于是在網(wǎng)上找了一個(gè)模擬器帮毁,關(guān)于模擬器的下載安裝及連接操作实苞,都會(huì)做一下介紹。下載地址烈疚,傻瓜式安裝黔牵。成功過(guò)啟動(dòng)模擬器。
在終端執(zhí)行adb devices
命令發(fā)現(xiàn)模擬器并沒(méi)有連接到爷肝。
這個(gè)時(shí)候猾浦,在cmd中,cd到nox的安裝目錄下灯抛。比如我的是C:\Program Files (x86)\Nox\bin跃巡,執(zhí)行命令nox_adb.exe connect 127.0.0.1:62001
重新執(zhí)行
adb devices
,很神奇牧愁,啥都沒(méi)有
將android-sdk目錄下的adb.exe復(fù)制到夜神安裝目錄下素邪,比如我的是從
這里
C:\Program Files (x86)\Android\android-sdk\platform-tools
復(fù)制到這里C:\Program Files (x86)\Nox\bin
,然后將C:\Program Files (x86)\Nox\bin
目錄下的nox_adb.exe 重命名為nox_adb_bak.exe.將adb.exe重命名為nox_adb.exe.重新執(zhí)行連接命令
nox_adb.exe connect 127.0.0.1:62001
猪半,然后執(zhí)行adb devices
就發(fā)現(xiàn)連接上模擬器了兔朦。
3.下載安裝Appium-Python-Client
若想使用python來(lái)寫腳本調(diào)用appium接口來(lái)操作模擬器偷线,就必須下載appium對(duì)于Python的包Appium-Python-Client,下載地址沽甥,下載完成后声邦,解壓。cd到解壓后的目錄下摆舟,執(zhí)行python setup.py install
安裝即可亥曹。
4.測(cè)試腳本
#-*- coding: utf8 -*-
from appium import webdriver
from time import sleep
import os
import sys
from selenium.webdriver.support.ui import WebDriverWait
PATH = lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.0.102:5554'
#desired_caps['app'] = 'Calculator.apk'
# desired_caps['app'] = PATH(r"C:\Users\user\Documents\Appium\alipay_wap_main.apk")
desired_caps['appPackage'] = 'qsbk.app'
desired_caps['appActivity'] = '.activity.group.SplashAdOtherActivity'
dr = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
WebDriverWait(dr, 30).until(lambda the_driver: the_driver.find_element_by_id('qsbk.app:id/tabPanel').is_displayed())
tab_label = dr.find_element_by_id('qsbk.app:id/tabPanel').find_elements_by_class_name('android.widget.LinearLayout')[0]
little_paper = tab_label.find_elements_by_class_name('android.widget.FrameLayout')[-2]
little_paper.click()
WebDriverWait(dr, 30).until(lambda the_driver: the_driver.find_element_by_id('qsbk.app:id/id_btn_login').is_displayed())
dr.find_element_by_id('qsbk.app:id/id_btn_login').click()
username_password = dr.find_elements_by_class_name("android.widget.EditText")
username_password[0].send_keys('用戶名')
username_password[1].send_keys('密碼')
dr.find_element_by_id('qsbk.app:id/id_btn_login').click()
dr.quit()
5.關(guān)于獲取程序的appPackage和appActivity,屬性值的方法
如果我們想要使用腳本來(lái)啟動(dòng)一個(gè)程序恨诱,這兩個(gè)屬性是必須知道的媳瞪。那如何得知這兩個(gè)屬性值呢,有個(gè)方法屢試不爽照宝。
首先在cmd中蛇受,執(zhí)行命令adb logcat>C:\appium_log.txt
,就是講appium的日志抓取到文件中,
然后厕鹃,啟動(dòng)模擬器中的app.
待app啟動(dòng)后兢仰,ctrl+c關(guān)閉日志的輸入到文本。
使用文本編輯器打開日志文件剂碴,查詢相關(guān)信息把将。
如果你知道你啟動(dòng)的程序的英文縮寫,當(dāng)然忆矛,直接搜效果是最好的秸弛。比如alipay、tencent.等等
6.神器
下面介紹個(gè)神器洪碳,cd 到C:\Program Files (x86)\Android\android-sdk\tools递览,就是android-sdk工具目錄下,有個(gè)uiautomatorviewer.bat程序啟動(dòng)腳本瞳腌。直接執(zhí)行
該工具可以查詢模擬器啟動(dòng)的程序的頁(yè)面元素對(duì)象的各種信息绞铃,最常查詢的就是resouce_id,class等嫂侍。用于獲取元素儿捧,并對(duì)元素進(jìn)行操作。