关于App的自动化测试

一、移动端测试知识概览

1、移动端测试是什么?

 移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度。

2、移动端测试分类

A、app功能测试

1)业务逻辑正确性测试

产品文档

2)兼容性测试

a.系统版本
b.分辨率
c.网络情况

3)异常测试

a.热启动应用
  b.网络切换&中断恢复
  c.电话&信息中断恢复

4)升级&安装卸载测试

5)健壮性测试

a.手机资源消耗
  b.流量消耗
 c.崩溃恢复等测试

B、app自动化测试

通过场景和数据的预设,把以人为驱动的测试行为转化为机器执行的一种过程.
  ⚠️ 并不是所有功能都能进行自动化

C、app安全测试

通过安全测试技术,保证app尽可能的不存在安全漏洞.

二、node的安装

1、找到node路径:

2、点击node安装包进入

 

3、进行下一步

 

4、选择路径

 

5、进行下一步,进入

6、等待

7、完成

8、运行cmd,查看是否安装成功(环境自动配置)

三、Appium的初步使用

1、找到Appium压缩包,解压到不是汉字的目录下

2、安装包里找到Appium.exe快捷键到桌面

3、点击Appium,进入

4、查看配置信息

 

5、点击启动服务进入

6、点击启动检查会话

7、对数据进行填写

desired_caps常用参数:
    platformName         平台的名称:iOS, Android, or FirefoxOS
    platformVersion      设备系统版本号    adb shell getprop ro.build.version.release(获取版本号)
    deviceName           设备号 IOS:instruments -s devices,Android: adb devices -l
    appActivity          启动的Activity
    appPackage           启动的包
adb shell dumpsys window | findstr mCurrentFocus(查询当前应用程序的包名和启动项)

8、点击启动回话,进入

9、进行录制

 

10、完成录制

 

11、复制录制生成的代码

代码:

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

el1 = driver.find_element_by_accessibility_id("搜索")
el1.click()

driver.quit()

如果报错,安装pip install Appium-Python-Client

 

12、运行查看代码,核对是否正确。

四、APP元素定位操作

1、

2、通过id定位

 方法:find_element_by_id(id_value) # id_value:为元素的id属性值

业务场景:
      a.进入设置页面
      b.通过ID定位方式点击搜索按钮

代码:

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# id
aa=driver.find_element_by_id("com.android.settings:id/search")
aa.click()

结果:

2、通过class定位

方法:find_element_by_class_name(class_value) # class_value:为元素的class属性值
业务场景:
        a.进入设置页面
        b.点击搜索按钮
        c.通过class定位方式点击输入框的返回按钮

代码1:

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# class
# 获取元素文本内容
aa=driver.find_elements_by_class_name("android.widget.TextView")
for i in aa:
    print(i.text)

结果:

 

代码2:指定点击其中一个

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

aa=driver.find_elements_by_class_name("android.widget.TextView")
aa[1].click()

结果:

3、通过xpath定位

 方法:find_element_by_xpath(xpath_value) # xpath_value:为可以定位到元素的xpath语句

 *** android端xptah常用属性定位:
      1. id ://*[contains(@resource-id,'com.android.settings:id/search')] 
      2. class ://*[contains(@class,'android.widget.ImageButton')]
      3. text ://*[contains(@text,'WLA')]

  *** 模糊定位 contains(@key,value): value可以是部分值

 业务场景:
        a.进入设置页面
        b.点击WLAN菜单栏

代码:

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# xpath
aa=driver.find_element_by_xpath("//android.widget.TextView[@content-desc='搜索']")
aa.click()

结果:

 

4、WebDriverWait 显示等待操作

在一个超时时间范围内,每隔一段时间去搜索一次元素是否存在,
    如果存在返回定位对象,如果不存在直到超时时间到达,报超时异常错误。

 方法:WebDriverWait(driver, timeout, poll_frequency).until(method)
    参数:
        a.driver:手机驱动对象
        b.timeout:搜索超时时间
       c.poll_frequency:每次搜索间隔时间,默认时间为0.5s
       d.method:定位方法(匿名函数)

 业务场景:
        a.进入设置页面
        b.通过ID定位方式点击搜索按钮

代码:

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)



# 超时时间为30s,每隔1秒搜索一次元素是否存在,如果元素存在返回定位对象并退出
search_button = WebDriverWait(driver, 30, 1).until(
    lambda driver: driver.find_element_by_id("com.android.settings:id/search"))
search_button.click()
driver.quit()

结果:

 

5、APP元素信息操作

发送数据到输入框:方法:send_keys(vaue) # value:需要发送到输入框内的文本

 业务场景:
      a.打开设置
      b.点击搜索按钮
      c.输入内容123

代码:

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入123
driver.find_element_by_id("android:id/search_src_text").send_keys("123")

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值