PPT
Faker用法
- GitHub - joke2k/faker: Faker is a Python package that generates fake data for you.
- 安装
pip install Faker
>>> from faker import Faker
>>> fake = Faker("zh_CN")
>>> fake.name()
'张杰'
>>> fake.name()
'杨柳'
>>> fake.name()
'盘秀华'
>>> fake.name()
'亢桂芳'
>>> fake.name()
'陈荣'
>>> fake.name()
'黄慧'
>>> fake.phone_number()
'18946539134'
>>> fake.phone_number()
'18959763610'
>>> fake.phone_number()
'15198913652'
>>> fake.phone_number()
'18202670223'
>>> fake.phone_number()
'18010752856'
>>>
学习路线总结
appium 学习路线.xmind.zip (252.4 KB)
打开指针位置
- 设置页面 -找到关于- 找到版本号,连点七下,返回到设置页面
- 进入开发者选项,找到 指针位置,打开
课堂实战
- 前提条件:
- 1、提前注册企业微信管理员帐号
- 2、手机端安装企业微信
- 3、企业微信 app 处于登录状态
- 通讯录添加成员用例步骤
- 打开【企业微信】应用
- 进入【通讯录】页面
- 点击【添加成员】
- 点击【手动输入添加】
- 输入【姓名】【手机号】并点击【保存】
- 验证点:登录成功提示信息
test_contact.py
from time import sleep
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from faker import Faker
from selenium.common import NoSuchElementException
class TestContact():
def setup_class(self):
# mock随机数据,姓名,地址,手机号
self.faker = Faker("zh_CN")
# 准备资源
# 定义一个字典
caps = {}
# 被测手机的平台
caps["platformName"] = "Android"
caps["deviceName"] = "127.0.0.1:11509"
# 包名和activity名称
# adb logcat ActivityManager:I | findstr "cmp"
# adb logcat ActivityManager:I | grep "cmp"
caps["appPackage"] = "com.tencent.wework"
caps["appActivity"] = ".launch.LaunchSplashActivity"
# 防止清空缓存
caps["noReset"] = "true"
# 初始化driver
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
# 隐士等待
self.driver.implicitly_wait(10)
def teardown_class(self):
# 销毁资源
self.driver.quit()
def test_addcontact(self):
# 进入【通讯录】页面
self.driver.find_element(AppiumBy.XPATH, "//*[@text='通讯录']").click()
# 点击【添加成员】
self.swip_find("添加成员").click()
# 点击【手动输入添加】
self.driver.find_element(AppiumBy.XPATH, "//*[@text='手动输入添加']").click()
# 输入【姓名】【手机号】
self.driver.find_element(AppiumBy.XPATH, "//*[@text='姓名 ']/../*[@text='必填']").send_keys(self.faker.name())
self.driver.find_element(AppiumBy.XPATH, "//*[@text='手机 ']/..//*[@text='必填']").send_keys(self.faker.phone_number())
# 点击【保存】
self.driver.find_element(AppiumBy.XPATH, "//*[@text='保存']").click()
# 打印page_source 找到toast提示
# sleep(2)
# print(self.driver.page_source)
toast_tips = self.driver.find_element(AppiumBy.XPATH, "//*[@class='android.widget.Toast']").text
# 验证结果
assert toast_tips == "添加成功"
def swip_find(self, text, max_num=5):
self.driver.implicitly_wait(1)
# 滑动查找
for num in range(max_num):
try:
element = self.driver.find_element(AppiumBy.XPATH, f"//*[@text='{text}']")
sleep(1)
return element
except NoSuchElementException as e:
print("未找到元素")
# 获取屏幕大小
size = self.driver.get_window_size()
width = size.get("width")
height = size.get("height")
start_x = width / 2
start_y = height * 0.8
end_x = width / 2
end_y = height * 0.2
self.driver.swipe(start_x, start_y, end_x, end_y, 2000)
if num == max_num - 1:
self.driver.implicitly_wait(10)
# 执行最大次数,仍然没有找到文本,抛异常
raise NoSuchElementException(f"找了{num}次,还是没有找到,请确认当前页面是否存在")
练习
企业微信实战(打卡功能)
- 前提条件:
- 1、提前注册企业微信管理员帐号
- 2、手机端安装企业微信
- 3、企业微信 app 处于登录状态
- 实现打卡功能
- 打开【企业微信】应用
- 进入【工作台】页面
- 点击【打卡】
- 选择【外出打卡】tab
- 点击【第 N 次打卡】
- 验证点:提示【外出打卡成功】
# test_workbench.py
"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
from time import sleep
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from selenium.common import NoSuchElementException
class TestWorkBench:
def setup_class(self):
# 准备资源
# 定义一个字典
caps = {}
# 被测手机的平台
caps["platformName"] = "Android"
caps["deviceName"] = "127.0.0.1:11509"
# 包名和activity名称
# adb logcat ActivityManager:I | findstr "cmp"
# adb logcat ActivityManager:I | grep "cmp"
caps["appPackage"] = "com.tencent.wework"
caps["appActivity"] = ".launch.LaunchSplashActivity"
# 防止清空缓存
caps["noReset"] = "true"
# 初始化driver
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
# 隐士等待
self.driver.implicitly_wait(10)
def teardown_class(self):
# 销毁资源
self.driver.quit()
def test_clockin(self):
# 进入【工作台】页面
self.driver.find_element(AppiumBy.XPATH, "//*[@text='工作台']").click()
# 点击【打卡】
self.swip_find("打卡").click()
# 选择【外出打卡】tab
self.driver.find_element(AppiumBy.XPATH, "//*[@text='外出打卡']").click()
# 点击【第N次打卡】
self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text, '次外出')]").click()
# 验证 外出打卡成功
text = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text, '外出打卡成功')]").text
assert "外出打卡成功" == text
def swip_find(self, text, max_num=5):
self.driver.implicitly_wait(1)
# 滑动查找
for num in range(max_num):
try:
element = self.driver.find_element(AppiumBy.XPATH, f"//*[@text='{text}']")
sleep(1)
return element
except NoSuchElementException as e:
print("未找到元素")
# 获取屏幕大小
size = self.driver.get_window_size()
width = size.get("width")
height = size.get("height")
start_x = width / 2
start_y = height * 0.8
end_x = width / 2
end_y = height * 0.2
self.driver.swipe(start_x, start_y, end_x, end_y, 2000)
if num == max_num - 1:
self.driver.implicitly_wait(10)
# 执行最大次数,仍然没有找到文本,抛异常
raise NoSuchElementException(f"找了{num}次,还是没有找到,请确认当前页面是否存在")