APP移動(dòng)端測(cè)試高級(jí)

1.Appium介紹

????Appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用于測(cè)試原生應(yīng)用、移動(dòng)網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平臺(tái)的

2.環(huán)境搭建

????需準(zhǔn)備:jdk1.6.0、android-sdk_r24.3.4-windows、python2.7、appium1.4.13.1、Node.js、Appium-Python-Client

????Appium庫安裝:

????????# 安裝

????????pip? install? Appium-Python-Client

????????# 檢驗(yàn)是否成功

????????pip list

3.Appium使用

????1.打開模擬器或者真機(jī)的應(yīng)用

????????①打開手機(jī)應(yīng)用

????????②打開Appium

????????③創(chuàng)建一個(gè)python項(xiàng)目,并創(chuàng)建一個(gè)文件

????????④將下面代碼復(fù)制到文件中

????????⑤獲取當(dāng)前應(yīng)用包名和啟動(dòng)activity并修改文件

????2.腳本內(nèi)啟動(dòng)其他app:driver.start_activity(appPackage,appActivity)

????3.關(guān)閉app:driver.close_app()? # 關(guān)閉當(dāng)前操作的app,不會(huì)關(guān)閉驅(qū)動(dòng)對(duì)象

????4.關(guān)閉驅(qū)動(dòng)對(duì)象:driver.quit()

4.App基礎(chǔ)操作API

????????1.前值代碼

????????????# server 啟動(dòng)參數(shù)

????????????desired_caps={}

????????????desired_caps['platformName']='Android'

????????????desired_caps['platformVersion']='5.1'

????????????desired_caps['deviceName']='192.168.56.101:5555'

????????????desired_caps['appPackage']='com.android.settings'

????????????desired_caps['appActivity']='.Settings'

????????????desired_caps['unicodeKeyboard']=True

????????????desired_caps['resetKeyboard']=True

????????????# 聲明driver對(duì)象

????????????driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

????????2.安裝APK到手機(jī):driver.install_app(app_path)

????????3.手機(jī)中移除App:driver.remove_app(app_id)

????????4.判斷APP是否已安裝:driver.is_app_installed(bundle_id)

????????5.從手機(jī)中拉取文件:

????????????import base64

????????????data=driver.pull_file(path)# 返回?cái)?shù)據(jù)為base64編碼

????????????print(str(base64.b64decode(data),'utf-8'))# base64解碼

????????6.獲取當(dāng)前屏幕內(nèi)元素結(jié)構(gòu):driver.page_source?

5.手機(jī)空間查看工具uiautomatorviewer

????????1.工具簡(jiǎn)介:用來掃描和分析Android應(yīng)用程序的UI控件的工具

????????2.how使用:1.進(jìn)入SDK目錄下的tools目錄,打開uiautomatorviewer

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.電腦連接真機(jī)或打開android模擬器

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.啟動(dòng)待測(cè)試app

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.點(diǎn)擊uiautomatorviewer的左上角Device Screenshot,會(huì)生成app當(dāng)前頁面的UI控件截圖

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.選擇截圖上需要查看的控件,即可瀏覽該控件的id,class,text,坐標(biāo)等信息

6.App元素定位操作

????1.Appium常用元素定位方式

????????id→id屬性值 :find_element/s_by_id(id_value) # id_value:為元素的id屬性值

????????class→class屬性值:find_element/s_by_class_name(class_value) # class_value:為元素的class屬性值

????????xpath→xpath表達(dá)式:find_element/s_by_xpath(xpath_value) # xpath_value:為可以定位到元素的xpath語句

、等待

# 顯式等待

fromselenium.webdriver.support.waitimportWebDriverWait

WebDriverWait(driver,timeout,poll_frequency).until(lambdax:x.find_elements_by_id(id_value))

# 固定等待

importtime

time.sleep(2)

APP元素信息操作API

# 1. 點(diǎn)擊元素

ele.click()

# 2. 發(fā)送數(shù)據(jù)到輸入框

send_keys(vaue)

# 如果輸入中文,會(huì)報(bào)錯(cuò),解決

desired_caps['unicodeKeyboard'] =True

desired_caps['resetKeyboard'] =True

# 3. 清空輸入框內(nèi)容

ele.clear()

# 4. 獲取元素的文本內(nèi)容

ele.text

# 5. 獲取元素的屬性值

ele.get_attribute(屬性)

# 6. 獲取元素在屏幕上的坐標(biāo)

ele.location

# 7. 獲取app包名和啟動(dòng)名

driver.current_package

driver.current_activity

APP元素事件操作API

# swip滑動(dòng)事件:點(diǎn)到點(diǎn)

driver.swipe(188,659,148,248,duration=5000)

# scroll:元素到元素

driver.scroll(ele1,ele2,duration=5000)

# drag:元素拖到元素

driver.drag_and_drop(ele1,ele2)

# 應(yīng)用置于后臺(tái)事件,time在后臺(tái)停留時(shí)間

driver.backgroud_app(time)

APP模擬手勢(shì)高級(jí)操作

fromappium.webdriver.common.touch_actionimportTouchAction

# 手指輕敲操作

TouchAction(driver).tap(ele).perform()

TouchAction(driver).tap(x=x,y=y).perform()

# 手指按操作

TouchAction(driver).press(ele).release().perform()

TouchAction(driver).press(x=x,y=y).release().perform()

# 手指長(zhǎng)按操作

TouchAction(driver).long_press(ele,duration=time).release().perform()

TouchAction(driver).long_press(x=x,y=y,duration=time).release().perform()

# 手指移動(dòng)操作

TouchAction(driver).press(ele1).wait(2000).move_to(ele2).release().perform()

TouchAction(driver).press(x=x,y=y).wait(2000).move_to(x=x,y=y).release().perform()

手機(jī)操作API

driver.device_time

driver.get_window_size()

# 發(fā)送鍵到設(shè)備

driver.keyevent(keycode)

keycode:242534

# 打開手機(jī)通知欄

driver.open_notifications()

# 獲取手機(jī)當(dāng)前網(wǎng)絡(luò)

# 結(jié)果:0 1 2 4 6

driver.network_connection

# 設(shè)置手機(jī)網(wǎng)絡(luò)

driver.set_network_connection(1)

# 手機(jī)截圖

importos

driver.get_screenshot_as_file(os.getcwd()+os.sep+'./screen.png')

腳本錄制

點(diǎn)擊“開始錄制”

操作手機(jī)

結(jié)束錄制

復(fù)制代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Appium介紹 Appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用于測(cè)試原生應(yīng)用、移動(dòng)網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平...
    老友_9e40閱讀 414評(píng)論 0 0
  • 一、Appium介紹 Appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用于測(cè)試原生應(yīng)用、移動(dòng)網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平...
    九櫻MOL閱讀 983評(píng)論 0 0
  • appium介紹 appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用測(cè)試原生應(yīng)用,移動(dòng)網(wǎng)頁應(yīng)用,和混合型應(yīng)用,且是跨平臺(tái)的...
    楷0105閱讀 311評(píng)論 0 0
  • 一、Appium介紹 Appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用于測(cè)試原生應(yīng)用、移動(dòng)網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平...
    Anwfly閱讀 2,820評(píng)論 2 7
  • 移動(dòng)端測(cè)試 知識(shí)概覽 一、 移動(dòng)端測(cè)試是什么 移動(dòng)端測(cè)試是指對(duì)移動(dòng)應(yīng)用進(jìn)行的測(cè)試,即實(shí)體的特性滿足需求的程度。 二...
    G_eebd閱讀 1,449評(píng)論 0 0

友情鏈接更多精彩內(nèi)容