国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Appium簡(jiǎn)易Android測(cè)試腳本

這篇具有很好參考價(jià)值的文章主要介紹了Appium簡(jiǎn)易Android測(cè)試腳本。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Appium簡(jiǎn)易Android測(cè)試腳本

前言

前段時(shí)間抽空看了下Appium寫(xiě)了一個(gè)簡(jiǎn)單的Android測(cè)試腳本。
該腳本主要功能為對(duì)Android應(yīng)用進(jìn)行一些自動(dòng)化操作。
根據(jù)Appium文檔中給出的信息腳本主要運(yùn)用以下功能。

①自動(dòng)打開(kāi)Android應(yīng)用
②查找元素并操作 (點(diǎn)擊,輸入,滑動(dòng))
③點(diǎn)擊屏幕固定坐標(biāo)
④模擬滑動(dòng)

準(zhǔn)備工作

1、安裝及前期準(zhǔn)備:點(diǎn)擊查看教程
2、測(cè)試元素信息:使用Appium,將所需要測(cè)試的元素進(jìn)行提取,例如元素ID,class,index,xpath(不推薦使用xpath定位)。
3、手動(dòng)操作一次,估算并記錄頁(yè)面加載,緩沖,切換的時(shí)間,后期防止程序出錯(cuò)需要增加等待時(shí)間(特別以坐標(biāo)定位方式進(jìn)行操作建議增加等待時(shí)間)。

實(shí)施

1、首先建議只寫(xiě)打開(kāi)APP的這一步驟,排除Appium服務(wù)沒(méi)有正常啟動(dòng)
2、寫(xiě)執(zhí)行腳本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time : 2023/4/25 9:27
# Author : kevin
# User : VINNO-Van
# Software: PyCharm
# File : vinno_package.py

# 連接Appium Server,初始化自動(dòng)化環(huán)境
from selenium.webdriver.common.by import By
import time
from appium import webdriver

# 引入ADB命令
import os, re

# os.system('chcp 65001')  # 將cmd的顯示字符編碼從默認(rèn)的GBK改為UTF-8
# deviceName = os.popen("adb devices").read()  # 設(shè)備名稱(chēng)
# platformVersion = os.popen("adb shell getprop ro.build.version.release").read()  # 安卓版本
# appPackage = os.popen("adb shell dumpsys window w |findstr \/ |findstr name=").read()  # 軟件名稱(chēng)

desired_caps = \
    {
        "deviceName": "0123456789ABCDEF",
        "platformName": "Android",
        "platformVersion": "4.4.2",  # 4.4.2  8.1.0
        "appPackage": "*.sportinspect", # 改成你測(cè)試APP的包名。不懂看準(zhǔn)備工作的第1步驟
        "appActivity": "*.sportinspect.SplashScreenActivity", # 改成你測(cè)試APP的活動(dòng)。不懂看準(zhǔn)備工作的第1步驟。
        "newCommandTimeout": 0,  # 設(shè)置超時(shí)時(shí)間, 默認(rèn)為60s,設(shè)置為0關(guān)閉。超時(shí)時(shí)間到后,軟件將退出
        "unicodeKeyboard": True,  # unicode編碼輸入  解決send_keys無(wú)法輸入中文
        "resetKeyboard": True,  # 隱藏軟鍵盤(pán)  解決send_keys無(wú)法輸入中文
        "automationName": "UiAutomator1", # 安卓版本大于5這里改為"UiAutomator2"
        "noReset": True  # 設(shè)置不清除軟件緩存,不寫(xiě)或者False則清除App緩存
    }

time_list = []


# 需要點(diǎn)擊的元素
# by:By 查找元素的方式
# value:Value  
# initial:是否重新打開(kāi)軟件
# index: 可變參數(shù)。0元素點(diǎn)擊, 1坐標(biāo)點(diǎn)擊, 2輸入文本, 3滑動(dòng)坐標(biāo)
def find_element(by, value, initial=0, *index):
    global driver
    start_time = time.time()
    index_class = None

    # initial==1時(shí),重啟軟件
    if initial == 1:
        driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        start_time = time.time()

    # 可變變量*index值長(zhǎng)度判斷,需要執(zhí)行的動(dòng)作是點(diǎn)擊還是輸入滑動(dòng)
    for index_class in index:
        print(index_class, type(index_class))

    # 循環(huán)查找需要執(zhí)行的元素
    while True:
        try:
            if len(str(find_element)) >= 0:
                time_consuming = time.time() - start_time
                time_list.append('%.3f' % time_consuming)  # 保留三位小數(shù),精確到1ms
                print('元素%s %s已經(jīng)找到,共耗時(shí)%s' % (by, value, time_consuming))

                # 可變變量*index值判斷執(zhí)行的動(dòng)作是點(diǎn)擊還是輸入滑動(dòng),0元素點(diǎn)擊,1坐標(biāo)點(diǎn)擊,2文本鍵入,3滑動(dòng)
                if index_class == 0:
                    click_element(by, value, *index)
                    break
                elif type(index_class) == list:
                    # 1表示查找坐標(biāo)點(diǎn)擊 | [1,(x, y),tap_sleep] & 范圍坐標(biāo)點(diǎn)擊[1,(x1, y1),(x2, y2), tap_sleep]
                    # tap_sleep = index
                    # driver.tap([], tap_sleep)
                    if len(index_class) == 3:
                        print([index_class[1]])
                        driver.tap([index_class[1]], index_class[2])

                    elif len(index_class) == 4:
                        print([index_class[1], index_class[2]])
                        driver.tap([index_class[1], index_class[2]], index_class[3])
                    break
                elif type(index_class) == dict:
                    driver.find_element(by, value).click()
                    driver.find_element(by, value).send_keys(index_class.get(2))  # 當(dāng)出現(xiàn)字典時(shí)2所對(duì)應(yīng)的是輸入
                    break
                elif type(index_class) == tuple:
                    driver.swipe(index_class[0], index_class[1], index_class[2], index_class[3], index_class[4])
                    break
                break
            else:
                print('請(qǐng)檢查方法調(diào)用輸入值是否正確')
                break
        except:
            print('沒(méi)找到', value)


#
def click_element(by, value, *index):
# 元素定位方法  :ID, XPATH, LINK_TEXT, PARTIAL_LINK_TEXT, 
# NAME,TAG_NAME,CLASS_NAME,CSS_SELECTOR,__dict__,__weakref__,
# Appium元素欄 :id, xpath, link text, partial link text, name, tag name, class name, css selector
    if str(by) == 'id':
        if len(index) > 0:
            driver.find_elements(by=By.ID, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.ID, value=value).click()
    elif str(by) == 'xpath':
        if len(index) > 0:
            driver.find_elements(by=By.XPATH, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.XPATH, value=value).click()
    elif str(by) == 'link text':
        if len(index) > 0:
            driver.find_elements(by=By.LINK_TEXT, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.LINK_TEXT, value=value).click()
    elif str(by) == 'partial link text':
        if len(index) > 0:
            driver.find_elements(by=By.PARTIAL_LINK_TEXT, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.PARTIAL_LINK_TEXT, value=value).click()
    elif str(by) == 'name':
        if len(index) > 0:
            driver.find_elements(by=By.NAME, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.NAME, value=value).click()
    elif str(by) == 'tag name':
        if len(index) > 0:
            driver.find_elements(by=By.TAG_NAME, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.TAG_NAME, value=value).click()
    elif str(by) == 'class name':
        if len(index) > 0:
            driver.find_elements(by=By.CLASS_NAME, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.CLASS_NAME, value=value).click()
    elif str(by) == 'css selector':
        if len(index) > 0:
            driver.find_elements(by=By.CSS_SELECTOR, value=value)[index[0]].click()
        else:
            driver.find_element(by=By.CSS_SELECTOR, value=value).click()


# (by, value, initial=0, *index):
# by:By
# value:Value
# initial:是否重新調(diào)用軟件,0不重新調(diào)用,1則重新調(diào)用
# index:可選參數(shù)
	# 0代表查找元素點(diǎn)擊 | 0
	# 1表示查找坐標(biāo)點(diǎn)擊 | [1,(x, y),tap_sleep] & 范圍坐標(biāo)點(diǎn)擊[1,(x1, y1),(x2, y2), tap_sleep]
	# 2表示鍵入文本 | {2: '文本'}
	# 滑動(dòng)好像忘了寫(xiě)了,尷尬?。?!

# 流程示例
while True: # 循環(huán)執(zhí)行下面步驟
    find_element('class name', 'android.widget.Button', 1, 0)  # 啟動(dòng)APP
    time.sleep(2)
    find_element('id', '*.sportinspect:id/et_pwd', 0, [1, (766, 240), 1000])  # 登錄
    time.sleep(10)
    find_element('class name', 'android.widget.Button', 0, [1, (345, 700), 1000])  # 心電測(cè)量
    time.sleep(40)
    find_element('id', '*.sportinspect:id/btn_start', 0, 0)  # 提交
    time.sleep(2)
    find_element('id', '*.sportinspect:id/md_buttonDefaultPositive', 0, 0)  # 提交確認(rèn)
    time.sleep(2)
    find_element('id', '*.sportinspect:id/iv_close', 0, 0)  # 提交完成


后記

上述腳本是個(gè)簡(jiǎn)單的測(cè)試小功能,后面如果有時(shí)間考慮做成讀取Excel進(jìn)行執(zhí)行。每次操作步驟都寫(xiě)在Excel中,腳本讀取Excel后執(zhí)行相關(guān)動(dòng)作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-531439.html

到了這里,關(guān)于Appium簡(jiǎn)易Android測(cè)試腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用【Python+Appium】實(shí)現(xiàn)自動(dòng)化測(cè)試

    使用【Python+Appium】實(shí)現(xiàn)自動(dòng)化測(cè)試

    一、環(huán)境準(zhǔn)備 1.腳本語(yǔ)言:Python3.x ? ?IDE:安裝Pycharm 2.安裝Java JDK 、Android SDK 3.adb環(huán)境,path添加E:SoftwareAndroid_SDKplatform-tools 4.安裝Appium for windows,官網(wǎng)地址 Redirecting ?點(diǎn)擊下載按鈕會(huì)到GitHub的下載頁(yè)面,選擇對(duì)應(yīng)平臺(tái)下載 ??安裝完成后,啟動(dòng)Appium,host和port默認(rèn)的即可,然

    2024年02月08日
    瀏覽(19)
  • Python +Appium 實(shí)現(xiàn)app自動(dòng)化測(cè)試

    Python +Appium 實(shí)現(xiàn)app自動(dòng)化測(cè)試

    一、Appium簡(jiǎn)介 Appium是一款開(kāi)源工具,用于自動(dòng)化iOS、Android和Windows桌面平臺(tái)上的本地、移動(dòng)web和混合應(yīng)用程序。原生應(yīng)用是指那些使用iOS、Android或Windows sdk編寫(xiě)的應(yīng)用。移動(dòng)網(wǎng)頁(yè)應(yīng)用是通過(guò)移動(dòng)瀏覽器訪問(wèn)的網(wǎng)頁(yè)應(yīng)用(appum支持iOS和Chrome上的Safari或Android上的內(nèi)置“瀏覽器”應(yīng)用

    2023年04月09日
    瀏覽(16)
  • 移動(dòng)應(yīng)用測(cè)試(Python+Appium+雷電模擬器)

    移動(dòng)應(yīng)用測(cè)試(Python+Appium+雷電模擬器)

    一、node.js(v20.1.1) 二、Java(JDK17) 三、Android SDK(24.4.1版本) 四、Python(3.10) 五、PyCharm(2023.3.2) 六、Appium(1.21.0) 七、雷電模擬器(雷電9) 若不想單獨(dú)去下載,想直接獲取所有安裝包,請(qǐng)?jiān)L問(wèn)百度網(wǎng)盤(pán)鏈接提?。篽ttps://pan.baidu.com/s/1LSzazfQ2PbdiMLfZ4WiWAQ?pwd=n4vi ? ? ? ?在

    2024年03月16日
    瀏覽(40)
  • python appium UI 自動(dòng)化測(cè)試框架討論

    python appium UI 自動(dòng)化測(cè)試框架討論

    目錄 前言: 框架共性總結(jié) Auto_Analysis 權(quán)限彈窗識(shí)別 前言: ?Python Appium UI自動(dòng)化測(cè)試框架是一種用于測(cè)試移動(dòng)應(yīng)用程序的工具,它結(jié)合了Python編程語(yǔ)言和Appium測(cè)試框架的功能。 框架共性總結(jié) 1 自動(dòng)找設(shè)備 連接設(shè)備 2 自動(dòng)啟 appium server 3 用例框架 unittest pytest 4 用例組織 yml 讀

    2024年02月16日
    瀏覽(24)
  • Python+Appium實(shí)現(xiàn)自動(dòng)化測(cè)試的使用步驟

    這篇文章主要介紹了Python+Appium實(shí)現(xiàn)自動(dòng)化測(cè)試的使用步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 1.腳本語(yǔ)言:Python3.x IDE:安裝Pycharm 2.安裝Java JDK 、Android SDK 3.adb環(huán)境,path添加E:

    2024年02月03日
    瀏覽(26)
  • python+appium+pytest自動(dòng)化測(cè)試-參數(shù)化設(shè)置

    python+appium+pytest自動(dòng)化測(cè)試-參數(shù)化設(shè)置

    來(lái)自APP Android端自動(dòng)化測(cè)試初學(xué)者的筆記,寫(xiě)的不對(duì)的地方大家多多指教哦。(所有內(nèi)容均以微博V10.11.2版本作為例子) 在自動(dòng)化測(cè)試用例執(zhí)行過(guò)程中,經(jīng)常出現(xiàn)執(zhí)行相同的用例,但傳入不同的參數(shù),導(dǎo)致我們需要重復(fù)的寫(xiě)用例,這樣會(huì)使我們的用例變得很長(zhǎng),冗余,很多地

    2023年04月08日
    瀏覽(24)
  • App自動(dòng)化測(cè)試|Appium+Python自動(dòng)化測(cè)試環(huán)境搭建

    App自動(dòng)化測(cè)試|Appium+Python自動(dòng)化測(cè)試環(huán)境搭建

    搭建過(guò)程步驟如下: 安裝jdk并配置好環(huán)境變量(jdk版本1.8以上) 安裝android-sdk并配置好環(huán)境變量;具體步驟見(jiàn):Android Studio安裝(推薦使用這種方法安裝SDK) - 環(huán)境配置 - 測(cè)試人社區(qū) 安裝安卓模擬器 安裝node.js(官網(wǎng)下載安裝最新版本) ;下載地址:下載 | Node.js 中文網(wǎng) 找到wind

    2024年02月12日
    瀏覽(26)
  • python+appium微信小程序/公眾號(hào)自動(dòng)化測(cè)試

    python+appium微信小程序/公眾號(hào)自動(dòng)化測(cè)試

    環(huán)境準(zhǔn)備 調(diào)試微信公眾號(hào)時(shí),查看進(jìn)程名稱(chēng),公眾號(hào)要先進(jìn)入文章或者內(nèi)部程序,小程序就進(jìn)入內(nèi)部程序即可 公眾號(hào)和小程序的自動(dòng)化不是必須要做,一般我是作為數(shù)據(jù)腳本使用 步驟 開(kāi)啟手機(jī)上的USB調(diào)試功能(開(kāi)發(fā)者模式) 打開(kāi)Chrome瀏覽器,地址欄輸入:Chrome://inspect 直接

    2024年02月09日
    瀏覽(22)
  • 【UI自動(dòng)化測(cè)試】appium+python+unittest+HTMLRunner

    【UI自動(dòng)化測(cè)試】appium+python+unittest+HTMLRunner

    進(jìn)階Python接口自動(dòng)化測(cè)試必備教程(2023全網(wǎng)最詳細(xì)) 簡(jiǎn)介 ?獲取AppPackage和AppActivity ?定位UI控件的工具 ?腳本結(jié)構(gòu) ?PageObject分層管理 ?HTMLTestRunner生成測(cè)試報(bào)告 ?啟動(dòng)appium server服務(wù) ?以python文件模式執(zhí)行腳本生成測(cè)試報(bào)告 下載與安裝 下載需要自動(dòng)化測(cè)試的App并安裝到手機(jī)

    2024年02月16日
    瀏覽(21)
  • Python+Appium+Pytest+Allure實(shí)戰(zhàn)APP自動(dòng)化測(cè)試框架

    Python+Appium+Pytest+Allure實(shí)戰(zhàn)APP自動(dòng)化測(cè)試框架

    Hi,大家好。今天我們來(lái)聊聊Python+Appium+Pytest+Allure實(shí)戰(zhàn)APP自動(dòng)化測(cè)試,pytest只是單獨(dú)的一個(gè)單元測(cè)試框架,要完成app測(cè)試自動(dòng)化需要把pytest和appium進(jìn)行整合,同時(shí)利用allure完成測(cè)試報(bào)告的產(chǎn)出。 編寫(xiě)常規(guī)的 線性 腳本具體的步驟如下: 1、設(shè)計(jì)待測(cè)試APP的 自動(dòng)化測(cè)試 用例 2、

    2023年04月09日
    瀏覽(166)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包