Appium实现安卓app自动化测试或爬虫功能

自动化测试和爬虫基本是相同的操作,首先定位页面元素,再次爬虫是获取数据,测试是封装请求参数发送请求查看请求结果。

自动化测试包括接口测试、web测试、app测试,接口测试用request包,web测试可以用selenium,安卓app测试则需要通过Appium服务器访问手机app。本文只讲述window电脑环境,Android手机系统app测试方法。

一、环境准备:

         (1)需要安装软件:jdk8、Appium、AndroidSDK包,下载地址:

                      链接:https://pan.baidu.com/s/1b_FWWmc0q08ibIvr3Tb7-g
                       提取码:olzv

         (2)需要添加配置jdk8环境变量、AndroidSDK环境变量、Appium环境变量。

          (3)安装appium-python-client环境

pip install appium-python-client

         (4)选择华为或小米等主流手机,以华为手机为例:

      设置——系统——关于手机——版本号,不停的点击“版本号”,直至变为开发模式,然后退回上一级(系统目录下),多出开发人员选项,进入开发人员选项,打开app调试。

          (5)判断环境变量配置是否成功,打开任意一个cmd黑窗口,输入:adb,如果不报错则环境变量配置成功。

二、代码操作:

     (1)先启动Appium,点击Start Server,

  (2)判断设备是否连接成功;adb devices -l

    (3)python代码:

from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
import time

desired_caps = {
  'platformName': 'Android',    # 被测手机是安卓
  'platformVersion': '9',    # 手机安卓版本
  'deviceName': 'xxx',    # 设备名,安卓手机可以随意填写
  'appPackage': 'tv.danmaku.bili',    # 启动APP Package名称
  'appActivity': '.ui.splash.SplashActivity',    # 启动Activity名称
  'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
  'resetKeyboard': True,   # 执行完程序恢复原来输入法
  'noReset': True,       # 不要重置App
  'newCommandTimeout': 6000,
  'automationName': 'UiAutomator2'
  # 'app': r'd:\apk\bili.apk',
}

# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 设置缺省等待时间
driver.implicitly_wait(5)

# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
    iknow.click()

# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()

# 根据id定位搜索输入框,点击
# sbox = driver.find_element_by_id('search_src_text')
sbox = driver.find_element_by_accessibility_id('搜索查询')
sbox.send_keys('白月黑羽')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)

# driver.find_element_by_xpath("//*[@resource-id='tv.danmaku.bili:id/tabs']//android.widget.TextView[3]").click()
# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")

for ele in eles:
    # 打印标题
    print(ele.text)
width = driver.get_window_size()['width']
height = driver.get_window_size()['height']
for i in range(1,100):
    time.sleep(5)
    driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4);
# titles = driver.find_elements_by_id("title")
# play_num = driver.find_elements_by_id("play_num")
# danmakus_num = driver.find_elements_by_id("danmakus_num")
#
# for j in titles:
#     print(j.text)
# for j in play_num:
#     print(j.text)
# for j in danmakus_num:
#     print(j.text)
input('**** Press to quit..')
driver.quit()

  (4)pycharm中运行上述代码,则app中会搜索“白月黑羽”,并滑动列表。

三、定位app中页面元素

    定位页面元素有两种方式;

  方式一:通过AndroidSDK提供的uiautomatorviewer查看,位置在androidsdk\tools\binuiautomatorviewer.bat,双击,

方式二:通过Appium右上角的放大镜按钮调出,然后输入参数,参数和python中代码中相同,点击Start Session

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值