精华内容
下载资源
问答
  • Airtest 是网易开源的一个跨平台的UI自动化测试框架,适用于游戏和App。它有以下一些功能: 1、跨平台:Airtest可以在几乎所有平台上执行游戏和App的自动化。 2、一次编写,随处运行:Airtest提供了跨平台的API,...

    在这里插入图片描述
    Airtest 是网易开源的一个跨平台的UI自动化测试框架,适用于游戏和App。它有以下一些功能:

    1、跨平台:Airtest可以在几乎所有平台上执行游戏和App的自动化。

    2、一次编写,随处运行:Airtest提供了跨平台的API,囊括了应用安装、模拟输入以及断言等。由于使用图像识别技术来定位UI元素,因此无需嵌入任何代码即可对游戏和应用进行自动化操作。

    3、可扩展性:通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本。提供的HTML报告包含了详细操作步骤和截屏,能够迅速定位到失败点。

    4、AirtestIDE:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本。AirtestIDE提供了完整的自动化工作流程支持:录制脚本->真机回放->生成报告。

    其中最吸引人的莫过于支持Python语言和可以在手机上进行自动化模拟操作这两点了。有了这功能,可以实现很多有趣的S操作。

    项目地址:

    https://github.com/AirtestProject/Airtest

    在这里插入图片描述

    但是有读者朋友表示,虽然Airtest支持将自动化脚本编译成 APK 直接运行,可照着官方提供的文档操作了一遍,发现不少的坑。所以今天就来带大家一起来趟一下这些坑。

    在开始编写自动化脚本之前,我们首先要下载安装 JDK,并配置 JDK 和 ADB 到环境变量中。

    以刷抖音短视频这一自动化操作为例,首先我们使用 Airtest IDE 新建一个 .air Airtest 项目。

    和常规自动化操作类似,我们需要借助 ADB 命令拿到抖音 App 的应用包名和初始 Activity,利用 start_app() 方法打开抖音。

    package_name = 'com.ss.android.ugc.aweme'
    activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'
    
    # 部分手机需要开启模拟点击
    start_app(package_name,activity=activity_name)
    

    接着拿到屏幕的宽、高数值,利用 swipe() 方法模拟滑动,即可以实现切换视频的操作。

    device_attrs  = device()
    print(device_attrs.uuid)
    
    # 获取设备的高度和宽度
    width, height = device_attrs.get_current_resolution()
    
    print(width)
    print(height)
    
    # 开始刷抖音
    while True:
        # 滑动一次
        swipe( (width * 0.5, height*3/ 4),(width * 0.5, height / 4),duration=1)
        sleep(2)
    

    上面这段代码直接在 IDE 运行,自动化操作能正常运行。

    下一步,利用 Firebase 打包脚本,依次点击:Firebase - 打包多个脚本 - 选择目标脚本,等待本地生成一个 apk 文件。

    在这里插入图片描述
    使用 adb 命令将 apk 安装到手机上,接着通过 instrument 开启自动化操作。

    # 开启自动化任务
    adb shell am instrument -w com.netease.open.airbase/android.support.test.runner.AndroidJUnitRunner
    

    坑一:运行之后很快就报错了,报 device() 方法在 kivy 中没有实现。

    官方文档提到的原生应用的 poco 没法使用,包含 device() 在内的很多方法,虽然属于 airtest 内部的方法,但是打包成 apk 识别不到。
    在这里插入图片描述
    我们可以将宽度和高度写死,然后再进行滑动操作。

    width = 1080
    height = 2160
    
    swipe( (width * 0.5, height*1/ 4),(width * 0.5, height*3 / 4),duration=0.5)
    

    坑二:向上滑动事件处理不当。

    测试多台设备后发现,脚本代码生成的 apk 在不同设备上运行结果不一致。

    仅上面的向上滑动这一步操作,有些手机当做 长按屏幕 来消费,还有一些手机当做 下拉刷新 来处理。

    建议先在 Airtest IDE 中运行,保证脚本的正确性的前提下,再去替换改写不被 apk 识别的部分。

    总之,利用 Firebase 打包自动化脚本成 apk 单独运行还不是很稳定,另外一起打包内置的 kivy 库还需要兼容和完善,期待官方下一版本。

    下面是一份配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
    在这里插入图片描述
    这些都可以以在公众号:伤心的辣条 ! 免费领取,还有一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

    学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

    喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


    好文推荐

    转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

    面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

    面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

    什么样的人适合从事软件测试工作?

    那个准点下班的人,比我先升职了…

    测试岗反复跳槽,跳着跳着就跳没了…

    展开全文
  • #!/usr/bin/env python#-*- coding...python3__author__ = "xxx""""自动化脚本生成工具"""importosimportxlrdimporttimeTestCaseName= ""TestCaseDescription= ""TestCasePreCondition= ""TestCaseStep= ""TestCaseE...

    #!/usr/bin/env python#-*- coding:utf-8 -*-#!python3

    __author__ = "xxx"

    """自动化脚本生成工具"""

    importosimportxlrdimporttime

    TestCaseName= ""TestCaseDescription= ""TestCasePreCondition= ""TestCaseStep= ""TestCaseExpectResult= ""TestEnvironment= ""TestScriptName= ""cur_path=os.getcwd()defscripts_template():

    testcases= os.path.join(cur_path, u"用例模板.xlsx")

    data= xlrd.open_workbook(r'%s' %testcases)

    table=data.sheet_by_index(0)

    n_rows=table.nrows

    n_cols=table.ncolsfor i in range(1, n_rows):

    TestCaseName= table.cell_value(i, 1)

    TestCaseDescription= table.cell_value(i, 2)

    TestCasePreCondition= table.cell_value(i, 3)

    TestCaseStep= table.cell_value(i, 4)

    TestCaseExpectResult= table.cell_value(i, 5)

    TestEnvironment=table.cell_value(i, 0)

    TestScriptName= "test_{0}".format(TestCaseName) #符合unittest测试用例定义的识别条件, 以"test"开头

    filename = os.path.join(cur_path, "{0}.py".format(TestScriptName))

    with open(filename,'w', encoding='utf-8') as out:

    out.write('''# !/usr/bin/env python

    # -*- coding:utf-8 -*-

    """

    #-----------------------------------------------------------------------

    用例名称: {0}

    用例描述: {1}

    前置条件:

    {2}

    测试步骤:

    {3}

    预期结果:

    {4}

    测试环境: {5}

    作者:{6}

    日期:{7}

    #-----------------------------------------------------------------------

    """

    import unittest

    class {8}(unittest.TestCase):

    def setUp(self):

    #TODO 添加用例执行前置条件

    pass

    def testRun(self):

    #TODO 添加用例执行测试步骤

    pass

    def tearDown(self):

    #TODO 添加恢复测试环境操作

    pass

    if __name__ == '__main__':

    unittest.main()'''.format(TestCaseName, TestCaseDescription, TestCasePreCondition,

    TestCaseStep, TestCaseExpectResult, TestEnvironment,__author__,

    time.strftime('%Y-%m-%d'), TestScriptName));print("generate scripts finished!")if __name__ == "__main__":

    scripts_template()

    运行一下以上测试脚本生成代码。生成的脚本如下:1 #!/usr/bin/env python

    2 #-*- coding:utf-8 -*-

    3

    4 """

    5 #-----------------------------------------------------------------------6 用例名称: case_01_01_01_017 用例描述: 测试天气提示刷新8 前置条件:9 打开天气APP10 测试步骤:11 1.后台设置今日天气为多云,查看App提示是否更新。12 预期结果:13 页面天气提示刷新为多云14 测试环境: Phone15 作者:xxx16 日期:2019-01-0817 #-----------------------------------------------------------------------18 """

    19

    20 importunittest21

    22

    23 classtest_case_01_01_01_01(unittest.TestCase):24

    25 defsetUp(self):26 #TODO 添加用例执行前置条件

    27 pass

    28

    29 deftestRun(self):30 #TODO 添加用例执行测试步骤

    31 pass

    32

    33 deftearDown(self):34 #TODO 添加恢复测试环境操作

    35 pass

    36

    37 if __name__ == '__main__':38 unittest.main()

    展开全文
  • 而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问点击行为)。...

    通常对于一个稍具规模的系统,一些新的改动势必会带来一些额外的功能回归测试工作,而这个工作是非常繁杂的,人肉的方式一次又一次的重复将会非常的枯燥乏味。

    而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。

    Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问点击行为)。Splinter提供了丰富的API,可以获取页面的信息,以判断当前的行为所产生的结果。

    最简单的例子

    browser = Browser(‘firefox’) 模拟一个浏览器

    browser.visit(‘http://waptest.taobao.com/login/login.htm’) 访问指定URL

    browser.fill('TPL_username',’test_04’) 填充表单用户名

    browser.fill('TPL_password',’taobao1234’) 填充表单密码

    browser.find_by_value('登录').first.click()表单提交

    运行代码,splinter会打开你所指定的浏览器然后进行各种操作,像放电影一样的根据你的代码逻辑在你面前一步一步执行。

    举个例子,现在我们要回归登录功能,以前我们从未开发过这样的脚本,所以现在我们首先要开发一个用于模拟登录行为的脚本。

    如下面代码(其实是非常简短的一个代码):

    #!/user/bin/python

    # -*- coding: utf8 -*-

    import sys

    import re

    from splinter.browser import Browser

    #####################################################

    # global instance

    CLOASE_AFTER_TEST = False

    GBK = "gbk"

    UTF8 = "utf8"

    #####################################################

    # encoding for console

    reload(sys)

    sys.setdefaultencoding(UTF8)

    #####################################################

    # small method

    encoding = lambda x:x.encode('gbk')

    #####################################################

    def output(x):

    """

    encode and print

    """

    print encoding(x)

    def resultMsg(x):

    """

    judge result and print, x : True or False

    """

    if x == True:

    print 'pass'

    else:

    print '[X]not pass'

    print '--------------------------'

    def checkresult(x):

    """

    check result message, x : the error message u want

    """

    resultMsg(browser.is_text_present(x))

    def testLogin(desc, username, password, result):

    """

    fill login form message and submit, check result message and print

    """

    output(desc)

    browser.fill('TPL_username',username.decode(UTF8))

    browser.fill('TPL_password',password.decode(UTF8))

    browser.find_by_value('登录').first.click()

    checkresult(result)

    __testUrl = 'http://waptest.taobao.com/login/login.htm?tpl_redirect_url=http%3A%2F%2Fm.taobao.com%2F'

    # chrome driver :http://code.google.com/p/selenium/wiki/ChromeDriver

    # already support firefox

    browser = Browser()

    browser.visit(__testUrl)

    output("测试页面:"+browser.title)

    try:

    # test login

    testLogin('测试未输入用户名','','','请输入会员名')

    testLogin('测试未输入密码','qd_test_001','','请输入密码')

    testLogin('测试帐户不存在','这是一个不存在的名字哦','xxxxxxx','该账户名不存在')

    testLogin('测试成功登录','qd_test_001','taobao1234','继续登录前操作')

    # test find password

    output("测试[找回密码]链接")

    browser.visit(__testUrl)

    backPasswordLink = browser.find_link_by_text('取回密码')

    if 1 == len(backPasswordLink):

    backPasswordLink.first.click()

    ru = re.findall(re.compile(".*(reg/gp.htm).*", re.IGNORECASE), browser.url)

    if ru is not None:

    checkresult('找回密码')

    else:

    output("测试找回密码链接失败")

    except Exception,x:

    print x

    if CLOASE_AFTER_TEST:

    browser.quit()

    21/212>

    展开全文
  • #从selenium库导入webdriver类 from selenium import webdriver ...#窗口最大 dr.maximize_window() #隐式等待,给页面加载的等待时间 dr.implicitly_wait(10) #dr.get()打开网址 dr.get("https://www.baidu
    #从selenium库导入webdriver类
    from selenium import webdriver
    #从time类导入sleep()方法,强制休眠
    from time import sleep
    #调用谷歌驱动定义给dr   后面要用到直接调用
    dr=webdriver.Chrome()
    #窗口最大化
    dr.maximize_window()
    #隐式等待,给页面加载的等待时间
    dr.implicitly_wait(10)
    #dr.get()打开网址
    dr.get("https://www.baidu.com")
    #定位到输入框   send_keys()输如文本
    dr.find_element_by_id("kw").send_keys("CSDN OTDOG")
    #点击搜索按钮  click()点击
    dr.find_element_by_id("su").click()
    #强制等待5秒
    sleep(5)
    #退出浏览器
    dr.quit()
    

    在这里插入图片描述

    展开全文
  • 今天给大家分享一个简单的python脚本,使用python进行http的接口测试脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和返回报文中的值一致,将测试...
  • python自动化脚本

    2021-01-13 02:08:50
    第一个python自动化脚本-测试页面pageid# -*- coding : utf-8 -*-__authon__ = 'test'import requestsimport xlrdfrom pyquery import PyQuery as pqfrom xlutils3 import copyimport osimport timefrom AutoScript....
  • 分享4个实用的Python自动化脚本

    千次阅读 2021-12-13 13:40:17
    今天,小陈将分享4个实用的python自动化脚本,无需手动一次又一次地完成这些任务,非常方便。 1、将 PDF 转换为音频文件 脚本可以将 pdf 转换为音频文件,原理也很简单,首先用 PyPDF 提取 pdf 中的文本,然后用...
  • 前言之前我们简单讨论了手工测试用例与自动化测试用之间的差异,以及自动化测试用例设计时的注意事项,这一节就通过实例向读者介绍如何编写具体的自动化测试用例。下面我以百度云盘为例:百度云盘是百度的产品之一,...
  • 安装python3,Mac下输入python3进入命令行整数,浮点数,字符串类型:-1,0.1,'game'字符串连接和复制:'My name is ' + 'John Wu'; 'John Wu '*5会打印5次,只有整数和字符串可以,浮点数不可以。变量存值:赋值:...
  • 今天分享 6 个非常有用的 Python 自动化脚本。 1、将 PDF 转换为音频文件 脚本可以将 pdf 转换为音频文件,原理也很简单,首先用 PyPDF 提取 pdf 中的文本,然后用 Pyttsx3 将文本转语音。关于文本转语音,你还...
  • 每天你都可能会执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Python...
  • 目录【登录测试用例】【代码演练】【百度:python单引号、双引号区别】【学习情况小结】【未解决问题】【明日计划】【登录测试用例】用例01:用户名、密码正确,登录成功,显示登录后页面用例02:用户名格式错误用例...
  • Python开发游戏自动化后台脚本

    千次阅读 2021-10-13 19:54:43
    Python开发游戏自动化后台脚本前言说明获取窗口句柄获得后台窗口截图数字识别识别并点击图片位置后台文字输入完整代码参考 前言 前段时间沉迷猪场一梦江湖,由于实在太肝便萌生出用脚本做日常的想法,写了第一个test...
  • 自动化脚本编写实例-python

    千次阅读 2021-02-04 10:00:11
    自动化脚本编写实例打开浏览器访问pto登陆修改管理员密码单元测试数据检查输入的数据合法性获取输入错误数据之后的页面提示语编写测试用例编写单元测试类1 单元测试中的通用操作2 测试类进行单元测试并生成测试报告...
  • 我现在执行一个python脚本。...怎么样让这个python自动运行。 求解。tornado也有这样地机制,具体可以看tornado源码,使用上比如:config_evn = settings.get("config").split(".")[-1].lower()if settings.ge...
  • 点击上方“AirPython”,选择“加为星标”第一时间关注 Python 原创干货!1. 前言大家好,我是安果!日常编写的 Python 自动化程序,如果在本地运行稳定后,就可以考虑将它...
  • 二、运行脚本:真机不断提示需要安装unlock,manager等插件且安装失败 1、在做手机自动化测试过程中,我们是完全没必要去安装这些插件的,想到的方法是跳过这些插件的安装,下面介绍下,我在遇到这种情况下的处理...
  • appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。“移动web应用”是指使用移动...
  • /usr/bin/env python#-*- coding: utf-8 -*-#@Time : 2018/08/31 09:43#@Author : zc#@File : 发起任务.pyimportuiautomator2 as u2importunittestimportuiautomator2.ext.htmlreport as htmlreportfrom time i...
  • 有什么Python写的代码发布,自动上线或者是配制管好像 git hook 可以实现自动发布怎么样通过Python实现自动添加脚本头信息的示例代码#。/usr/bin/python#title :test4.py#description :I am test script#author :...
  • python自动化测试

    2021-01-30 05:04:18
    一、概述Python是一种跨平台的计算机程序设计语言,以其代码简介、易懂、易读、易维护、可移植、开源库丰富等特点迅速成为一门被大量用户所欢迎的、...软件自动化测试是测试工作的一部分,是对手工测试的一种补充,...
  • 前言本人新手,说不定会出现各种差错,希望各位能指出来(请勿转载)在代码篇里就不多介绍测试环境的搭建以及测试工具的安装了同一个功能的自动化脚本将通过Java、Python以及Ruby来编写,所以更新速度有可能会比较慢~~...
  • 一、Uiautomator2 模块的安装和环境准备 安装过程比较简单,python 环境准备好之后,通过 pip 即可安装,执行命令: ...该命令是用于初始我们的测试手机,该过程将安装包含 http rpc 服务的 apk 到手机主要有:atx
  • 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。本文链接:.../usr/bin/env python# -*- coding: utf-8 -*-import osimport timeclass Wifi(...
  • 最近在学web自动化,记录一下学习过程。此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求。环境:windows10,64位一、安装pythonpython官方下载地址:https://www.python.org/downloads/进入页面就有...
  • 1.1 Python的运行环境在我决定学习一门新语言Python的时候,Python3已经出来了,虽然目前是Python2与Python3同步维护,Python2拥有大量的类库。但是随着时间的发展,Python3才是以后发展的主流,所以在这里我选择的...
  • 匿名用户1级2016-09-04 回答...2. constants文件夹:包含了常量初始python脚本文件,根据业务划分可以再创建子文件夹或多个常量文件;3. data文件夹:包含了测试用的数据;4. lib文件夹:包含了支持框架运行的py...
  • 相信大家经历过许多面试都会有这样的感受:好不容易通过了 2 -3轮技术面试,但是薪资不够理想;要么被面试的测试专家虐的不要不要的。但每一次的面试也能让自己...Python 自动化测试面试题目汇总1、super 是干嘛用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,162
精华内容 46,064
关键字:

python自动化测试脚本

python 订阅