python-app自动化测试知识详解

1 篇文章 0 订阅
1 篇文章 0 订阅

一、App自动化测试原理

自动化脚本—发送指令—>appium server—转发指令—>Android SDK(软件工具包/框架)—操作手机终端—>被测手机终端(模拟器/真机)

二、Desired Capabilities-Appium自动化配置项

设置参数:

操作系统:plateformName 值

版本 plateformVersion

设备名称

app    apk的路径(自动安装到终端)

包名(应用程序)

入口启动项

Desired Capabilities-Appium

三、常用的adb命令

1. 连接模拟器:adb connect 127.0.0.1:62001

其它模拟器:雷神(5555) 夜神(62001) mumu(7555) 逍遥(21503)

2. 查看连接的设备:adb devices

3. 查看被测app的包名及入口启动页面

aapt dump badging apk的路径

四、python代码实现手机终端

以考研帮app为例:

五、appium日志的查看

  1. 自动化脚本发送http请求,请求参数:终端设置参数
  2. 创建会话
  3. 确认终端设备是否连接 并且确认安卓版本 确认设置参数是否与终端的设置是否一致
  4. Appium会推送一个包’AppiumBootstrap,jar’ 模拟器上api包:appium server指令进行接收,操控手机终端
  5. 响应http请求
  6. 下一个http请求...

六、appium元素定位工具

1.UIAutomatorView

Android SDK自带的定位工具

位置:D:\Andriod_SDK\tools\uiautomatorviewer.bat

Jdk:支持jdk1.8或1.8以下版本

元素常见几个属性:

text:

resoureid:

class:元素标签

content-desc/description:元素功能描述-语音播报

2.Appium Desktop Inspector

Appium server自带的定位工具

3.Weditor-----推荐

Uiautomator2 python第三方库 通过appUI自动化测试框架

安装(在dos下进行):

命令01:pip install Uiautomator2

命令02:python -m uiautomator2 init

命令03:pip install weditor==0.6.4   (可能出错,需要降低版本)

确认安装:weditor --help

使用:weditor,会在浏览器中打开weditor

七、Appium界面元素定位方法(id/ClassName/accessibility/xpath)

1. 问题

问题1:不推荐使用

版本:appium-python-client2.11.1,selenium:4.10.0------不推荐使用

AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

解决方法:

python用appium进行安卓测试时,find_elements_by_*提示没有这个方法的解决方案_没有find_element_by-CSDN博客

注意:1、appium1.5版本后不再支持Name定位

      2、Selenium4.0不再支持find_elements_by_*方法,只支持finf_element(by,value)和find_elements(by.value)这两种定位方法,关键在于by的值都有哪些,如下:

第一类是继承Selenium库中的by值,在selenium.webdriver.common.by文件中,可以看到by值有以下几种:

第二类是appium封装其他库的接口(比如uiautomator2),在appium.webdriver.common.appiumby文件中,可以看到by值有以下几种(在框架中使用)

3、也可以通过AppiumBy来进行定位,如下:

from appium.webdriver.common.appiumby import AppiumBy

     

4、特殊页面元素定位(contexts):

问题2:推荐使用版本

版本:Appium-Python-Client 1.2.0,selenium:3.141.0------推荐使用,JDK:1.8

版本安装推荐如下,安装Appium-Python-Client时会自动安装selenium

pip install appium-python-client==1.2.0

问题3:appium出现:UiAutomator exited unexpectedly with code 4294967295, signal null

解决方法:1.重启appium

2.卸载

3.在dos下执行python -m weditor

2.元素定位的方法:

1.通过resourceid属性定位  id

2.通过文本定位   text

3.合定位:多个属性来进行定位  resourceId + text

driver.find_element_by_android_uiautomator('new UiSelector().text("登录").resourceId("com.tal.kaoyan:id/login_login_btn")')

4.通过content-desc/description定位  accessibility

el_pass=driver.find_element_by_accessibility_id('密码 安全')
el_pass.click()
time.sleep(1)
el_pass.send_keys('1234567890')

注意

  1. app输入时经常会遇到无法输入的情况,需要通过click()点击缓冲实现下一步输入

5.通过xpath定位,一般不采用

driver.find_element_by_xpath("//*[@resource-id='com.tencent.mobileqq:id/btn_login']")

3.APP元素的操作

1.APP六大常用元素操纵:

click()、send_keys()、get_attibute()、text()

get_attibute():可以输出属性值(如输入框的值、按钮值)

el_login.get_attribute('text')
1.滑屏、多点触控、长按、下拉

Swipe(self:T,start_x:int,start_y:int,end_x:int,end_y:int,duration:int=0)

参数说明:

start_x:开始位置的x坐标

start_y:开始位置的y坐标

end_x: 结束位置的x坐标

end_y: 结束位置的y坐标

duration:延时多少毫秒

1.滑动
方式1:swipe

上滑:driver.swipe(360,1000,360,100,1500)

下滑:driver.swipe(360,100,360,1000,1500)

左滑:driver.swipe(650,640,100,640,1500)

右滑:driver.swipe(100,640,650,640,1500)

例():

#获取屏幕尺寸
app_size=driver.get_window_size()
print('手机屏幕的尺寸',app_size)
x=app_size['width']
y=app_size['height']
#左滑(2次)
for i in range(0,2):
    driver.swipe(start_x=x*0.9,
                 start_y=y*0.5,
                 end_x=x*0.3,
                 end_y=y*0.5,
                 duration=1000)
    time.sleep(1)
#点击立即体验
el_tiyan=driver.find_element_by_id("com.tal.kaoyan:id/activity_splash_guidfinish")
el_tiyan.click()

print('输入用户名')
# el_user = driver.find_element_by_id("com.tal.kaoyan:id/login_email_edittext")
el_user=driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")')
el_user.send_keys("xugang")

print('输入密码')
el_passwd = driver.find_element_by_id("com.tal.kaoyan:id/login_password_edittext")
el_passwd.send_keys('xugang_123')

print("请点击登录")
el_login=driver.find_element_by_android_uiautomator('new UiSelector().text("登录").resourceId("com.tal.kaoyan:id/login_login_btn")')
el_login.click()
time.sleep(10)
driver.quit()
方式2:drag_and_drop
#将元素e1拖拽到元素e2
driver.drag_and_drop(e1,e2)
方式3:TouchAction
from appium.webdriver.common.touch_action import TouchAction
#press:点击坐标,move_to:移动到某个坐标,release:释放鼠标,perform:执行以上所有操作
TouchAction(driver).press(x=650,y=640).wait(1500).move_to(x=100,y=640).release().perform()
2.打开系统通知栏(下拉:open_notifications)
driver.open_notifications()
3.模拟按键(press_keycode)

返回键

driver.press_keycode(4)

home键

driver.press_keycode(3)
4.通过元素坐标点击按钮
1.方式一(tap):
#通过元素定位查看元素的左边边界
#计算中点,得到被点击的坐标
driver.tap([650,51])

注意:由于不同手机的分辨率不同,导致通过坐标进行点击会出现不稳定的情况

解决办法:

  1. 使用size=driver.get_window_size()获取屏幕尺寸,然后通过百分比确定坐标
  2. 如下代码:
size=driver.get_window_size()	#获取屏幕尺寸
#driver.tap([(650,50)])    #原先元素的坐标
print(650/size['width'],50/size['height'])	#得到一个百分比 0.9  0.039
driver.tap([(int(size['width']*0.9),int(size['height']*0.039))])   #通过百分比换算的元素坐标
2.方式二(TouchAction):
from appium.webdriver.common.touch_action import TouchAction
TouchAction(driver).press(x=1009, y=122).release().perform()
5.长按操作(TouchAction
el=driver.find_element_by_id('su')
#duration=10000:长按10秒
TouchAction(driver).long_press(el,duration=10000).perform()
6.双击
TouchAction(self.driver).tap(self.locator(loc)).wait(200).tap(self.locator(loc)).perform()
7.辅助操作(安装,打开,后台运行,终止运行,卸载
#安装指定路径下的apk
driver.install_app(r'F:\手机测试_python\微信小程序开发和Appium\4.Appium-概念和入门案例\要用的软件\被测的app\kaoyan3.1.0.apk')
#打开指定包名的app
driver.activate_app('com.tal.kaoyan')
#后台运行10秒,再切换回前台
driver.background_app(10)
#终止指定包名app的运行
driver.terminate_app('com.tal.kaoyan')
#卸载指定包名的app
driver.remove_app('com.tal.kaoyan')

  • 47
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python-Appium自动化测试是一种基于Python语言Appium框架的自动化测试方法,用于测试移动应用程序的功能和性能。它可以模拟用户在移动设备上的操作,如点击、滑动、输入等,以验证应用程序的正确性和稳定性。同时,Python-Appium自动化测试还可以生成测试报告和日志,帮助开发人员快速定位和解决问题。 ### 回答2: Python-Appium自动化测试是使用Python开发语言Appium工具结合实现的一种移动应用自动化测试方法。Appium是一个跨平台的开源自动化测试框架,可用于Android和iOS应用测试,同时它也支持多种编程语言,其中包括PythonPython作为一种易学易用的脚本语言,对于自动化测试方面来说,有着很好的应用场景。 Appium的优势在于它实现了"一次编写,随处运行"的理念,即一套测试脚本可以同时运行在Android、iOS甚至是Windows平台的设备上,提高了测试效率和覆盖率,同时也减轻了测试人员的工作量。此外,Appium还具有很好的可扩展性和兼容性,可以支持多种测试框架的集成。 在Python-Appium自动化测试中,主要需要掌握Appium的API接口,通过Python脚本实现对应用的UI元素进行定位、控制、操作和验证等测试动作。通过使用Python编写测试用例,可以在测试过程中调用Appium的API接口,实现自动化测试,进而提高效率,减少测试成本。 总结起来,Python-Appium自动化测试是一项非常有意义和优越性的技能,能够帮助测试人员更加高效地完成移动应用自动化测试任务,更好地提升开发效率和质量。然而,在学习和应用Python-Appium自动化测试技术时,也需要充分考虑到应用的安全性和稳定性,以确保测试结果的准确性和可信度。 ### 回答3: Python-Appium自动化测试是使用Python编程语言Appium测试框架来进行自动化测试的一种方法。Appium是一个开源的跨平台的移动应用自动化测试框架,可以实现在不同的移动操作系统(如iOS和Android)上进行测试。而Python是一个简单易学的编程语言,也是非常流行的测试工具之一。因此,使用Python-Appium自动化测试是一种非常强大且易于操作的自动化测试方法。 Python-Appium自动化测试的主要优势在于它可以提高测试效率和精度。由于测试人员不需要手动执行测试,他们可以通过编写测试脚本来自动执行测试。这些脚本可以被重复使用,可以快速地测试不同的场景,并且可以在不同的设备和操作系统上进行测试。 另外,Python-Appium自动化测试还可以提高测试的精度。因为这种自动化测试方法是由计算机执行的,所以它不会因为人为疏忽或者错误而产生测试错误。它可以帮助测试人员减少任何可能的误差,并且可以帮助他们快速识别出与应用程序相关的问题,从而更快地修复这些问题。 总的来说,在Python-Appium自动化测试方面有很多的应用场景,它可以帮助测试人员和开发者快速且准确地识别出与应用程序相关的问题,从而帮助他们更快地修复这些问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值