首页 > 其他分享 >pyest+appium实现APP自动化测试,思路全总结在这里

pyest+appium实现APP自动化测试,思路全总结在这里

时间:2022-09-01 09:45:46浏览次数:54  
标签:appium APP driver pytest allure 测试 安装 pyest


每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:magetest

码同学抖音号:小码哥聊软件测试


01appium环境搭建

  • 安装nodejs

http://nodejs.cn/

为什么要安装nodejs?

因为appium这个工具的服务端是由nodejs语言开发的

 

  • 安装jdk,并且配置环境变量

为什么要装jdk?

因为我们要测试安卓,那么安卓的调试环境需要依赖jdk

 

  • 安装sdk,并配置环境变量

为什么要装sdk?

因为我们要测试安卓,sdk就是安卓开发调试的环境

 

  • 安装appium服务端

1. 命令行形式的appium server

npm install [email protected]

 

 

2. appium desktop版本,在官网下载即可

 

 

3. 上述两种之间的区别

桌面版不仅仅是一个appium server,他还包括了元素定位调试以及录制脚本的功能

命令行版本仅仅是一个appium server

 

  • 安装appium-doctor

npm install appium-doctor

这个工具是用来检查appium的环境的,但是注意并不是说在这里检查没有错误就能代表我的环境一定没有问题

 

 

 

  • 安装安卓模拟器(并不是必须)

夜神、mumu,等等



2

搭建python+pytest+appium环境



  • 安装python

  • 安装pytest

pip install pytest

 

  • 安装selenium

pip install selenium

 

  • 安装appium

pip install Appium-Python-Client

  • 安装allure-pytest

pip install allure-pytest



3l 安装pycharm搭建项目编写脚本

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest


  •  初始化driver代码编写

# !/usr/bin python3                        

# encoding: utf-8 -*-                        

# @author: 沙陌 微信:Matongxue_2

# @Time: 2021/5/21 10:25

# @Copyright:北京码同学网络科技有限公司

 

#移动端初始化用到的参数特别多

#下面的这个字典里的参数是脚本告诉appium服务端我都要干什么,基础的能力参数

import time

import allure

from appium import webdriver

from selenium.webdriver.common.by import By

desired_caps = {

   #这表示你要测试的设备类型,安卓就写android,ios就写ios

   'platformName':'android',

   #这表示你要测试的app的路径

   'app':'C:\\Users\\lixio\\Desktop\\douban.apk',

   #看起来像是设备名称,但是注意在安卓上这个位置的值随便写都行,

   #这个并不能够代表你要执行的设备是哪个

   'deviceName':'xxx',

   #这个参数才是真正的指定执行哪台设备的参数,

   # 他的值写的就是使用adb devices命令看到的设备名称

   'udid':'127.0.0.1:62001',

   #该参数非常重要,表示在执行测试时不重签名apk文件,

   # 默认情况下appium会针对apk文件进行重签名操作,

   # 但是现在的app都有签名篡改的校验,如果被重签名了那么这个app就不能正常使用了

   'noSign':True,

   #该参数表示在执行appium测试时使用appium的辅助输入法,

   # 好处是支持中文输入支持键盘隐藏

   'unicodeKeyboard':True,

   #表示执行完测试之后将手机的输入法重置回手机原来的

   'resetKeyboard':True,

   #表示脚本和appium服务之间连接的session超时时间,单位是秒

   'newCommandTimeout':600

}

# 初始化driver,参数里看到的url就是appium服务的地址 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

#增加隐式等待

driver.implicitly_wait(10) #单位是秒

```

  • 元素查看

可以使用sdk自带的uiautomatorviewer.bat这个工具,也可以使用appium desktop版本的元素查看

 

 

  • 豆瓣登录脚本编写,采用pytest方式

@allure.title('豆瓣登录')

def test_login():

   # id定位在安卓端对应的元素属性是resource-id

   driver.find_element(By.ID,'com.douban.frodo:id/left').click()

   driver.find_element(By.ID,'com.douban.frodo:id/input_user_name').send_keys('18729399607')

   driver.find_element(By.ID,'com.douban.frodo:id/input_password').send_keys('abc123456')

   driver.find_element(By.ID,'com.douban.frodo:id/sign_in_douban').click()

   #操作完成后,必须有断言来判断结果是否正常

   time.sleep(3)

   page_source = driver.page_source

   assert '书影音' in page_source



4执行测试

  • 执行前准备工作

1. 启动appium服务,在命令行做如下操作

 

 

2. 确保手机设备连接正常

 

 

 

  • 执行测试

在pycharm的Terminal中执行如下命令

pytest -sv --alluredir ./report/allure-results --clean-alluredir

 

  • 生成allure测试报告

allure generate ./report/allure-results -o ./report/allure-report --clean

 

 

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

标签:appium,APP,driver,pytest,allure,测试,安装,pyest
From: https://www.cnblogs.com/testfan2019/p/16645404.html

相关文章

  • Application.EnableVisualStyles()和Application.SetCompatibleTextRenderingDefault(
    1、publicstaticvoidEnableVisualStyles():此方法为应用程序启用可视样式。2、Application.SetCompatibleTextRenderingDefault(false)3、Application.Run()函数1、pu......
  • uniapp 监听用户主动截屏事件
    一、uni.onUserCaptureScreen(CALLBACK)监听用户主动截屏事件,用户使用系统截屏按键截屏时触发此事件。平台差异说明AppH5微信小程序支付宝小程序百度小程序字节......
  • uniapp 获取手机联系人
    uni.addPhoneContact(OBJECT)调用后,用户可以选择将该表单以“新增联系人”或“添加到已有联系人”的方式(APP端目前没有选择步骤,将直接写入),写入手机系统通讯录,完成手机通讯......
  • uniapp 隐藏、获取键盘,及调整键盘按键
    一、uni.hideKeyboard()隐藏软键盘隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。平台差异说明AppH5微信小程序支付宝小程序百度小程序字节跳动小程......
  • Jetpack架构组件学习(4)——APP Startup库的使用
    最近在研究APP的启动优化,也是发现了Jetpack中的AppStartup库,可以进行SDK的初始化操作,于是便是学习了,特此记录原文:Jetpack架构组件学习(4)——AppStartup库的使......
  • @RequestMapping注解详解
    功能RequestMapping注解是一个用来处理请求地址映射的注解,可用于类或方法的上方,用于类的上方可以作为父路径value属性 @RequestMapping(value={"/index","/hello"})p......
  • 利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取上两篇文章介绍了自动遍历的测试需求、工具选择和AppCrawler的环境安装、启动及配置文件字......
  • 模拟tomcat服务器,sun公司,webapp开发者
    模拟tomcat服务器,sun公司,webapp开发者首先我们思考一下一个动态web应用需要哪些角色参与,角色与角色之间又有多少协议?1.有4种角色,分别是(浏览器开发团队[如谷歌],web服务器......
  • uniapp 跳转链接
    安装uni-link超链接组件在异步里需要跳转页面或者app里打开浏览器,不能自动跳转,如充值:增加一个弹窗,获取到地址之后,手动点击link,打开app<uni-link:href="pa......
  • App Store上架之后“元数据被拒”如何快速查看被拒原因?
    1.找到AppStore中您所提交的App的唯一ID,一般是十位纯数字; 2.把这十位数字复制下来,替换到下面链接的“***”处,然后访问即可快速查看被拒 原因了。 https://appsto......