赞
踩
app底层是c语言,应用层是java,所以需要jdk
01、appium客户端 appium destop 服务器
02、命令行安装:pip.exe install Appium-Python-Client
apium python库
同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档
软件测试视频教程观看处:
2023年B站最牛软件测试面试突击教程,字节大佬亲授,99%的人都能拿到offer
检查电脑和模拟器是否建立连接 adb devices
下载考研帮,在电脑端下载后拉到模拟器即可使用
- #用python代码启动考研帮
- #提前告知代码要测试哪个app,哪个设备
- #设备信息
- from appium import webdriver
-
- info={
- #测试的平台Androidios
- #info['platformName']='Android'
- "platformName":"Android",
- #测试的版本号设置-关于-版本号
- "platformVersion":"7.1.2",
- #设备名adbdevices
- "deviceName":"127.0.0.1:62001",
- #包名获取方式有很多种adbshelldumpsyswindowfindstrmCurrentFocu打开当前窗口的命令
- "appPackage":"com.tal.kaoyan",
- #应用名
- "appActivity":"com.tal.kaoyan.ui.activity.SplashActivity",
- #"允许不重置"
- "noRest":False
- }
- #启动考研帮
- #web自动化seleniumwebdriver
- #app自动化appiumwebdriver
- driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
- #重点打开appiumdestop,start
-
- #清空设置-应用-缓存
- #appiumsdk中的工具tools,uiautomator.bat
- #测试登录
- #取消点击
- #driver.find_element_by_id('android:id/button2').click()
- #跳过点击
- #driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click()
- #用户协议点击同意
- #每次打开界面都不一样,不写代码了
- #无法播放此视频点击确定
- driver.find_element_by_id('android:id/button1').click()
- #密码登录
- driver.find_element_by_id('com.tal.kaoyan:id/loginRegistorcodeAndPassword').click()
- #输入用户名,输入密码,点击登录按钮
- driver.find_element_by_id('com.tal.kaoyan:id/loginEmailEdittext').send_keys('')
- driver.find_element_by_id('com.tal.kaoyan:id/loginPasswordEdittext').send_keys('')
- #已阅读并同意,点击单选按钮
- driver.find_element_by_id('android.widget.CheckBox').click()
- #点击登录
- #driver.find_element_by_id('com.tal.kaoyan:id/loginLoginBtn').click()
- #xpath写法
- driver.find_element_by_xpath("//*[@text='登录']").click()
优化思路:
登录脚本 优化 配置信息放在yaml文件
启动时,如果说没启动,启动报错,可以用日志文件记录起来,封装日志
登录,有些app会弹窗,这些方法可以封装成公共方法 公共文件
登录脚本,关键字驱动,把常用的方法封装成一个文件
测试登录,测试不同的情况,可以用unittest,pytest;+ddt测试数据,可以放在测试文件中
生成测试报告 unittest,pytest
把框架放在jenkins,实现开发提交代码,就自动运行自动化框架,把测试报告发出来
搭建框架容易,难点在编程基础
完整优化代码
2.1)base_page.py
- #基类,封装的公共方法都在这里
-
- class BasePage:
- def __init__(self,driver):
- self.driver= driver
-
- #元素定位
- def locator(self,loc):
- return self.driver.find_element(*loc)
- #输入
- # self.driver.find_element_by_id('').sendkey('')
-
- def input_(self,loc,txt):
- self.locator(loc).send_keys(txt)
-
- # 点击
- def click(self,loc):
- self.locator(loc).click()
2.2)common_fun.py
- import logging
- from selenium.common.exceptions import NoSuchElementException
- import logging
- from selenium.webdriver.common.by import By
- from config.desired_caps import appium_desired
-
- from config.base_page import BasePage
- class Common(BasePage):
- cancel = (By.ID,'android:id/button2')
- skip=(By.ID,'com.tal.kaoyan:id/tv_skip')
-
- def check_cancel(self):
- logging.info("=============开始检查取消按钮==============")
- try:
- cancel=self.driver.find_element(*self.cancel)
- except NoSuchElementException:
- logging.info("取消按钮没有找到")
- else:
- logging.info("点击取消")
- cancel.click()
- def check_skip(self):
- logging.info("=========开始检查跳过按钮============")
- try:
- skip = self.driver.find_element(*self.skip)
- except NoSuchElementException:
- logging.info("跳过按钮没有找到")
- else:
- logging.info("点击跳过")
- skip.click()
- #1、获取整个屏幕的大小size
- def size(self):
- # a=driver.get_window_size()['width']
- x=self.driver.get_window_size()['width']
- y=self.driver.get_window_size()['height']
- return x,y
- #向左划,宽1000 高1000
- # driver.swipe(900,800,500,800,2000)
- def swipeLeft(self,t,n):
- lsize=self.driver.size()
- #900
- x1=lsize[0]*0.9
- y1=lsize[1]*0.5
- x2=lsize[0]*0.1
- for i in range(n):
- self.driver.swipe(x1,y1,x2,y1,t)
2.3)cs_caps.yaml
- platformName: Android
- platformVersion: 7.1.2
- deviceName: 127.0.0.1:62001
- appPackage: com.tal.kaoyan
- appActivity: com.tal.kaoyan.ui.activity.SplashActivity
- noRest: False
- ip: 127.0.0.1
- port: 4723
2.4)desired_caps.py
- import yaml
- from appium import webdriver
- from config.testLog import test_log
- log=test_log()
- # 要yaml文件的数据 找到yanl文件,可读
- def appium_desired():
- stream = open('../config/cs_caps.yaml', 'r')
- # 数据加载出来
- data = yaml.load(stream, Loader=yaml.FullLoader)
-
-
- # 字典是什么 元组是什么
- info = {}
- info['platformName'] = data['platformName']
- info['platformVersion'] = data['platformVersion']
- info['deviceName'] = data['deviceName']
- info['appPackage'] = data['appPackage']
- info['appActivity'] = data['appActivity']
- info['noRest'] = data['noRest']
- # info['ip']=data['ip']
- # info['port']=data['port']
- # driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', info)
- log.info('开始跑')
- driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(data['port']) + '/wd/hub', info)
- return driver
- if __name__ == '__main__':
- appium_desired()
2.5)login_page.py
- from selenium.webdriver.common.by import By
- from config.common_fun import Common
-
- log=test_log()
- class LoginPage(Common):
- user=(By.ID, 'com.tal.kaoyan:id/login_email_edittext')
- pwd=(By.ID, 'com.tal.kaoyan:id/login_password_edittext')
- button = (By.ID, 'com.tal.kaoyan:id/login_login_btn')
- def login(self, username,password):
- #点击取消
- self.check_cancel()
- #点击跳过
- self.check_skip()
- #输入用户名,输入密码,点击登录
- log.info('请输入用户名%s'%username)
- self.input_(self,user,username)
- log.info('请输入密码%s' % password)
- self.input_(self, pwd, password)
- self.click(self.button)
-
- #要测试各种情况,测正常的情况,异常的情况,先进性unittest永历官吏框架
- #结合ddt,想要把测试数据放在Yaml中,放在代码
- if __name__ == '__main__':
- driver = appium_desired()
- lp=LoginPage(driver)
- lp.login('qwerty2664','qwerty123')
2.6)testLog.py
- #日志
- import logging
- def test_kog():
- logger=logging.getLogger()
- logger.setLevel(logging.INFO)
- if not logger.handlers:
- #输出到控制台
- sh=logging.StreamHandler()
- logger.addHandler(sh)
- #设置格式
- fomartor=logging.Formatter(fmt='%(asctime)s%(filename)s%(levelname)s%()')
- sh.setFormatter(fomartor)
- #输出到文本
- fh =logging.FileHandler('../logs/runlog.log',encoding='utf-8')
- logger.addHandler(fh)
- fh.setFormatter(fomartor)
- return logger
最后在这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助,有需要的朋友你可以【点击文末小卡片免费领取】
除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近600个G,包括基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源。
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。