以操作小米商城下单为例
流程是 启动小米商城app, 点击分类,点击小米手机, 点击小米10 至尊版,点击加入购物车,点击确定....
原脚本
Copyfrom time import sleep
from appium import webdriver
from selenium.common.exceptions import NoSuchElementExceptioncaps = {'platformName': 'Android','platformVersion': '6.0.1','deviceName': 'emulator-5554','appPackage': 'com.xiaomi.shop','appActivity': '.activity.MainTabActivity','automationName': 'uiautomator2'
}dr = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
dr.implicitly_wait(10)
sleep(2)# 处理弹出广告try:dr.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ImageView')dr.keyevent(4)
except:print('未出现')dr.find_element_by_xpath('//*[@text="分类"]').click()
dr.find_element_by_xpath('//*[@text="小米手机"]').click()
dr.find_element_by_xpath('//*[@text="小米10 至尊版"]').click()
dr.find_element_by_xpath('//*[@text="加入购物车"]').click()
dr.find_element_by_xpath('//*[@text="确定"]').click()
操作封装
Copyimport subprocess
from time import sleepfrom appium import webdriver
from selenium.common.exceptions import NoSuchElementExceptionAPPIUM_SERVER = 'http://127.0.0.1:4723/wd/hub'
AUTOMATION_NAME = 'uiautomator2'defrun_cmd(cmd):p1 = subprocess.Popen(cmd, shell=True,stdout=subprocess.PIPE)output = p1.stdout.read().strip().decode('utf-8')return outputclassDevice:def__init__(self, device_name=None, version=None, platform='Android'):self.driver = Noneself.device_name = device_name or self.get_device_name()self.version = version or self.defget_platform_version()print(f'初始化设备 {platform}{version}{device_name}')self.caps = dict(platformName=platform, platformVersion=version,deviceName=device_name, automationName=AUTOMATION_NAME)@staticmethoddefget_device_name():deivce_name = run_cmd('adb get-serialno')return device_name@staticmethoddefget_platform_version()platform_version = run_cmd('adb shell getprop ro.build.version.release')return platform_versiondeflaunch_app(self, package, activity):print(f'启动应用 {package}/{activity}')self.caps.update(appPackage=package, appActivity=activity)self.driver = webdriver.Remote(APPIUM_SERVER, self.caps)self.driver.implicitly_wait(10)return selfdeffind(self, target):# target 为 id=kw 格式, 当不包含=时,默认为text=targetby, value = target.split('=') if'='in target else'text', targetif by == 'text':by, value = 'xpath', f'//*[@text="{value}"]'return self.driver.find_element(by, value)deftry_find(self, target):try:return self.find(target)except NoSuchElementException:print(f'元素 {target} 未出现')defclick(self, target):print(f"点击 {target}")self.find(target).click()return self # 返回self可使得对象支持链式操作definput_to(self, target, text):print(f"在 {target} 输入 {text}")self.find(target).send_keys(text)return selfdefback(self):print('返回')self.driver.keyevent(4)return selfdefwait(self, secs=1):sleep(secs)return self
使用
Copymumu = Device() # 自动获取当前第一个设备及平台版本mumu.launch_app(package='com.xiaomi.shop', activity='.activity.MainTabActivity').wait(2)# 处理弹出广告
ads = mumu.try_find('xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/''android.widget.FrameLayout/android.widget.ImageView')
mumu.back()# 加购操作
mumu.click('分类').click('小米手机').click('小米10 至尊版').click('加入购物车').click('确定')
运行输出如下
Copy初始化设备 Android 6.0.1 emulator-5554
启动应用 com.xiaomi.shop/com.xiaomi.shop2.activity.MainActivity
返回
点击 分类
点击 小米手机
点击 小米10 至尊版
点击 加入购物车
点击 确定
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
电商项目实战
web测试项目
web+App+h5+小程序 测试项目
接口自动化测试实战项目
Linux实战项目
面试资料
我们进阶学习自动化测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
以上资料,对于想要测试进阶的朋友们来说应该会很有帮助,需要的小伙伴可以后台私信找我免费领取。
总结
我见过很多leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了好几年,更夸张的是7、8年工作内容的重复性比较高,没有什么技术含量的工作。
凡事要趁早,特别是技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!!