1、配置小程序
coding:utf-8
author = ‘lili’
‘’’
description:driver配置
‘’’
import time
from appium import webdriver
class driver_configure():
@property
def get_driver(self):
# 获取driver
try:
desired_caps = {}
desired_caps[‘platformName’] = ‘Android’ # 平台
desired_caps[‘platformVersion’] = ‘23’ # 系统版本
desired_caps[‘deviceName’] = ‘c3756aa**’ # 设备名称
desired_caps[‘appPackage’] = ‘com.tencent.mm’ # APK包名
desired_caps[‘appActivity’] = ‘com.tencent.mm.ui.LauncherUI’ # 被测程序启动时的Activity
desired_caps[‘unicodeKeyboard’] = ‘true’ # 是否支持unicode的键盘。如果需要输入中文,要设置为“true”
desired_caps[‘resetKeyboard’] = ‘true’ # 是否在测试结束后将键盘重置为系统默认的输入法。
desired_caps[‘newCommandTimeout’] = ‘120’ # Appium服务器待appium客户端发送新消息的时间。默认为60秒
desired_caps[‘noReset’] = True # true:不重新安装APP,false:重新安装app
desired_caps[‘automationName’] = ‘uiautomator2’
desired_caps[‘chromeOptions’] = {‘androidProcess’: ‘com.tencent.mm:appbrand’} # 当前小程序运行的进程
self.driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’, desired_caps)
time.sleep(5)
return self.driver
except Exception as e:
print(‘启动失败’)
raise e
2、uiautomatorviewer页面元素定义
coding:utf-8
author = ‘lili’
‘’’
description:元素定义
‘’’
from common import Base_page
from appium.webdriver.common import mobileby
import time
class swipe_page(Base_page.Base_page):
by = mobileby.MobileBy()
item_fx = (by.XPATH, “//android.widget.TextView[@text=‘发现’]”) # 点击“发现”
item_xcx = (by.NAME, “小程序”) # 点击小程序
item_wdxcx = (by.NAME, “我的小程序”) # 点击我的小程序
item_kjxs = (by.NAME, “科技线上”) # 点击科技线上
def click_fx(self): self.find_element(*self.item_fx).click() # 点击“发现”def click_xcx(self): self.find_element(*self.item_xcx).click() # 点击小程序 time.sleep(3) self.find_element(*self.item_wdxcx).click() # 点击我的小程序 time.sleep(3) self.find_element(*self.item_kjxs).click() # 点击科技线上def swipe_down(self, n): # # 向下滑动 x = self.driver.get_window_size()['width'] y = self.driver.get_window_size()['height'] for i in range(n): self.driver.swipe(x / 2, y * 3 / 4, x / 2, y / 4)def swipe_up(self, n): '''上滑''' x = self.driver.get_window_size()['width'] y = self.driver.get_window_size()['height'] for i in range(n): self.driver.swipe(x / 2, y / 4, x / 2, y * 3 / 4)3、启动小程序,以及具体的test_case
coding:utf-8
author = ‘lili’
‘’’
description:
‘’’
import unittest
from common import driver_configure
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from src.pages.weixin_page import swipe_page
from src.pages.jfhome_page import home_page
from src.pages.wode_page import wode_page
from src.pages.itemdetail_page import detail_page
from src.pages.ConfirmationOrder_page import Confirmation_page
from src.pages.dhchenggong_page import chenggong_page
from src.pages.orderdetail_page import orderdetail_page
class test_jfsch(unittest.TestCase):
@classmethod
def setUpClass(cls):
dconfigur = driver_configure.driver_configure()
cls.driver = dconfigur.get_driver
'''def test_01qidong(self): ''滑动进入微信启动小程序'' #self.driver.find_element_by_android_uiautomator('text("微信")').click() # 点击微信Tab self.swipe_page = swipe_page(self.driver) self.swipe_page.swipe_up(1) # 屏幕向上滑动 time.sleep(5) self.driver.find_element_by_name("科技线上").click() # 点击顶部的图标"科技线上"进入小程序 time.sleep(5) print(self.driver.contexts) # 打印当前所有的上下文 '''def test_01qidong(self): '''从发现进入微信启动小程序''' print('启动积分商城小程序') self.swipe_page = swipe_page(self.driver) self.swipe_page.click_fx() # 点击发现 #self.swipe_page.swipe_down(1) self.swipe_page.click_xcx() # 启动小程序 time.sleep(5) print(self.driver.contexts) # 打印当前所有的上下文 self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/1启动积分商城小程序.png') self.home_page = home_page(self.driver) self.assertEqual('首页', self.home_page.get_text()) print('当前总积分数: ', self.home_page.get_zjf()) print('获取当前总积分并转换成int型: ', int(self.home_page.get_zjf()[:-2])) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 #print('购买商品后的积分数: ', int(self.home_page.get_zjf()[:-2]) - 4)def test_02login(self): '''登录小程序''' source = self.driver.page_source element = '登录后显示当前积分' print(source) if element in source: self.home_page = home_page(self.driver) self.home_page.click_wd() self.wode_page = wode_page(self.driver) self.wode_page.click_image() time.sleep(3) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/2登录积分商城小程序.png') self.assertEqual('18618481247', self.wode_page.get_phone()) # 查找ID元素,存在则直接返回 self.home_page.click_wd() # 点击首页 return True else: print('登录成功') return False # 不存在则返回Falsedef test_03create(self): '''纯积分兑换下单''' self.home_page = home_page(self.driver) Total_jf = int(self.home_page.get_zjf()[2:-2]) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 print('当前总积分数只显示数字: ', Total_jf) #self.home_page.click_sy() time.sleep(3) print(self.driver.get_window_size()) self.home_page.swipeDown() self.home_page.click_goods1() time.sleep(2) self.detail_page = detail_page(self.driver) print(self.driver.contexts) # 打印当前所有的上下文 self.driver.switch_to.context("NATIVE_APP") # 切换上下文 print(self.driver.current_context) # 打印当前的上下文 self.detail_page.click_dh() # 立即兑换 self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_dh() # 点击确认兑换 time.sleep(3) self.chenggong_page = chenggong_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/3纯积分兑换下单成功,积分减少.png') self.assertEqual('兑换成功', self.chenggong_page.get_dhcg()) #self.chenggong_page.click_jxdh() # 点击按钮 继续兑换,返回首页列表 self.chenggong_page.click_dhxq() # 点击按钮 兑换详情,进入兑换详情页面 time.sleep(3) self.orderdetail = orderdetail_page(self.driver) order_jf = int(self.orderdetail.get_zj()[5:-2]) # 获取订单商品积分数 print('查看订单商品总价: ', order_jf) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 Current_jf = Total_jf - order_jf # 购买商品后的积分数 print('购买商品后的积分数: ', Current_jf) self.orderdetail.click_jxdh() # 点击按钮 继续兑换,返回首页列表 time.sleep(3) print('当前总积分数: ', self.home_page.get_zjf()) Total_jf1 = int(self.home_page.get_zjf()[2:-2]) print(Current_jf) print(Total_jf1) if Current_jf == Total_jf1: print('总积分减少计算正确') else: print('总积分减少计算不正确')def test_04create(self): '''积分+金额兑换线上支付下单''' self.home_page = home_page(self.driver) #self.home_page.click_sy() time.sleep(3) #self.home_page.swipe_down(1) self.home_page.click_goods2() time.sleep(3) self.detail_page = detail_page(self.driver) # print(self.driver.contexts) # 打印当前所有的上下文 #self.driver.switch_to.context("NATIVE_APP") # 切换上下文 # print(self.driver.current_context) # 打印当前的上下文 self.detail_page.click_dh() # 立即兑换 self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_dh() # 点击确认兑换 time.sleep(5) self.driver.back() self.chenggong_page = chenggong_page(self.driver) #self.chenggong_page.click_gb() #self.driver.back() time.sleep(3) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/4积分+金额兑换线上支付下单成功.png') self.assertEqual('订单等待支付', self.chenggong_page.get_dzf()) self.driver.back() self.driver.back()def test_05create(self): '''积分+金额兑换线下支付下单''' self.home_page = home_page(self.driver) # self.home_page.click_sy() time.sleep(3) # self.home_page.swipe_down(1) self.home_page.click_goods2() time.sleep(3) self.detail_page = detail_page(self.driver) # print(self.driver.contexts) # 打印当前所有的上下文 # self.driver.switch_to.context("NATIVE_APP") # 切换上下文 # print(self.driver.current_context) # 打印当前的上下文 self.detail_page.click_dh() # 立即兑换 self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_zffs() # 选择支付方式 线下支付 self.confirm_page.click_dh() # 点击确认兑换 time.sleep(3) self.chenggong_page = chenggong_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/5积分+金额兑换线下支付下单成功.png') self.assertEqual('兑换成功', self.chenggong_page.get_dhcg()) self.chenggong_page.click_jxdh() # 点击按钮 继续兑换,返回首页列表def test_06create(self): '''同一个商品兑换多个''' self.home_page = home_page(self.driver) # self.home_page.click_sy() time.sleep(3) # self.home_page.swipe_down(1) self.home_page.click_goods1() # 点击商品 time.sleep(3) self.detail_page = detail_page(self.driver) self.detail_page.click_tzdh() # 添加商品并立即兑换 time.sleep(3) self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_dh() # 点击确认兑换 time.sleep(3) self.chenggong_page = chenggong_page(self.driver) #self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/6同一个商品兑换多个.png') #self.assertEqual('兑换成功', self.chenggong_page.get_dhcg()) self.chenggong_page.click_dhxq() # 点击按钮 兑换详情 time.sleep(3) self.orderdetail = orderdetail_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/6同一个商品兑换多个.png') self.assertEqual('商品总价:4积分', self.orderdetail.get_zj()) # 获取订单总价 self.orderdetail.click_jxdh() # 点击按钮 继续兑换,返回首页列表def test_07create(self): '''取消积分兑换,积分退还''' # time.sleep(20) self.home_page = home_page(self.driver) Total_jf = int(self.home_page.get_zjf()[2:-2]) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 print('当前总积分数: ', Total_jf) # self.home_page.click_sy() time.sleep(3) print(self.driver.get_window_size()) #self.home_page.swipeDown() self.home_page.click_goods1() time.sleep(3) self.detail_page = detail_page(self.driver) print(self.driver.contexts) # 打印当前所有的上下文 self.driver.switch_to.context("NATIVE_APP") # 切换上下文 print(self.driver.current_context) # 打印当前的上下文 self.detail_page.click_dh() # 立即兑换 self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_dh() # 点击确认兑换 time.sleep(3) self.chenggong_page = chenggong_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/3纯积分兑换下单成功,积分减少.png') self.assertEqual('兑换成功', self.chenggong_page.get_dhcg()) # self.chenggong_page.click_jxdh() # 点击按钮 继续兑换,返回首页列表 self.chenggong_page.click_dhxq() # 点击按钮 兑换详情,进入兑换详情页面 time.sleep(3) self.orderdetail = orderdetail_page(self.driver) ''' order_jf = self.orderdetail.get_zj() # 获取订单商品积分数 print('查看订单商品总价: ', int(order_jf[5:-2])) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 Current_jf = int(Total_jf[:-2]) - int(order_jf[5:-2]) # 购买商品后的积分数 print('购买商品后的积分数: ', Current_jf) ''' self.orderdetail.click_qxdh() # 点击按钮 取消兑换 time.sleep(2) self.assertEqual('订单取消成功 积分已退还', self.orderdetail.get_status()) self.assertEqual('已取消', self.orderdetail.get_status1()) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/7取消积分兑换,积分退还.png') self.orderdetail.click_jxdh() # 点击按钮 继续兑换,返回首页列表 time.sleep(3) print('当前总积分数: ', self.home_page.get_zjf()) Total_jf1 = int(self.home_page.get_zjf()[2:-2]) print(Total_jf) print(Total_jf1) if Total_jf == Total_jf1: print('总积分减少计算正确') else: print('总积分减少计算不正确')def test_08create(self): '''修改自提门店下单''' #time.sleep(20) self.home_page = home_page(self.driver) Total_jf = int(self.home_page.get_zjf()[2:-2]) # 截取从头开始到倒数第二个字符之前的数据,并转化成int型 print('当前总积分数只显示数字: ', Total_jf) #self.home_page.click_sy() time.sleep(3) print(self.driver.get_window_size()) #self.home_page.swipeDown() self.home_page.click_goods1() time.sleep(4) self.detail_page = detail_page(self.driver) self.detail_page.modify_store() # 修改自提门店 self.detail_page.click_dh() # 立即兑换 time.sleep(2) self.confirm_page = Confirmation_page(self.driver) self.confirm_page.click_dh() # 点击确认兑换 time.sleep(3) self.chenggong_page = chenggong_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/3纯积分兑换下单成功,积分减少.png') self.assertEqual('兑换成功', self.chenggong_page.get_dhcg()) self.chenggong_page.click_dhxq() # 点击按钮 兑换详情,进入兑换详情页面 time.sleep(3) self.orderdetail = orderdetail_page(self.driver) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/8修改自提门店下单成功.png') self.assertIn('高济北京线上001', self.orderdetail.get_store()) # 获取自提门店 self.orderdetail.click_jxdh() # 点击按钮 继续兑换,返回首页列表 time.sleep(3) print('当前总积分数: ', self.home_page.get_zjf())def test_09create(self): '''减少商品toast提示“亲,不能再少了”''' self.home_page = home_page(self.driver) # self.home_page.click_sy() time.sleep(3) # self.home_page.swipe_down(1) self.home_page.click_goods1() # 点击商品 time.sleep(3) self.detail_page = detail_page(self.driver) self.detail_page.click_jsh() # 减少商品,弹出toast提醒 # self.detail_page.find_toast("亲,不能再少了", 10, 0.01) self.driver.get_screenshot_as_file('D:/python/pyth-workspace/xiaochengxu/screenshot/9减少商品toast提示.png') self.driver.back() self.home_page.swipeUp()@classmethoddef tearDownClass(cls): cls.driver.quit()if name==‘main’:
unittest.main()
4、结果图













