def step_impl(context, webapp_user_name, webapp_owner_name, category_name): home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() if category_name != u'全部': product_list_page.switch_category(category_name) context.page = product_list_page
def step_impl(context, webapp_user_name, webapp_owner_name, product_name): home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() product_detail_page = product_list_page.enter_product_detail_page( product_name) context.page = product_detail_page
def step_impl(context, webapp_user_name, product_name): page = getattr(context, 'page', None) if page and page.is_shopping_cart_page(): #在购物车页面再次获取信息时,不需要重新进入 shopping_cart_page = page else: home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() shopping_cart_page = user_center_page.enter_shopping_cart_page() shopping_cart_page.delete_product(product_name)
def step_impl(context, webapp_user_name): page = getattr(context, 'page', None) if page and page.is_shopping_cart_page(): #在购物车页面再次获取信息时,不需要重新进入 shopping_cart_page = page else: home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() shopping_cart_page = product_list_page.enter_shopping_cart_page() # if getattr(context, 'text', None): # args = json.loads(context.text) # products = args['products'] # if products == 'all': # shopping_cart_page.select_products('all') # else: # for product in products: # shopping_cart_page.select_products(product['name']) # shopping_cart_page.increase_purchase_count_to(product['name'], product['count']) # else: # args = {} #判断是否需要填充默认的收货地址 has_ship_info = __has_ship_info(webapp_user_name, context.webapp_owner_name) # if (not has_ship_info) and (not 'ship_info' in args): # #数据库中无ship info,且购买参数中也无ship info,创建默认ship info # __create_default_ship_info(webapp_user_name, context.webapp_owner_name) # has_ship_info = True #获得提交后的page,可能情况: #1. 购物车page #2. 编辑收货地址page #3. 编辑订单page page = shopping_cart_page.submit_order() if page.is_shopping_cart_page(): context.page = page else: if not has_ship_info: edit_ship_address_page = WAEditShipAddressPage( context.webapp_driver) edit_ship_address_page.input_ship_info(args['ship_info']) edit_ship_address_page.click_submit_button() edit_order_page = WAEditOrderPage(context.webapp_driver) context.page = edit_order_page else: edit_order_page = WAEditOrderPage(context.webapp_driver) context.page = edit_order_page
def step_impl(context, webapp_user_name, webapp_owner_name): products = json.loads(context.text) for product in products: home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() product_detail_page = product_list_page.enter_product_detail_page( product['name']) product_detail_page.show_purchase_panel() #这里必须先选择规格,再调整数量 if product.get('model', None): product_detail_page.select_model(product['model']) if product.get('count', None): product_detail_page.increase_purchase_count_to(product['count']) product_detail_page.add_to_shopping_cart()
def step_impl(context, webapp_user_name): page = getattr(context, 'page', None) if page and page.is_shopping_cart_page(): #在购物车页面再次获取信息时,不需要重新进入 shopping_cart_page = page else: home_page = WAHomePage(context.webapp_driver) home_page.load() product_list_page = home_page.enter_product_list_page() shopping_cart_page = product_list_page.enter_shopping_cart_page() context.page = shopping_cart_page actual = { "product_groups": shopping_cart_page.get_product_groups(), "total_product_count": shopping_cart_page.get_total_product_count(), "total_price": shopping_cart_page.get_total_price() } expected = json.loads(context.text) bdd_util.assert_dict(expected, actual)
def step_impl(context, webapp_user_name, webapp_owner_name): if context.text: args = json.loads(context.text) else: args = {} home_page = WAHomePage(context.webapp_driver) home_page.load() product = args['product'] product_list_page = home_page.enter_product_list_page() product_detail_page = product_list_page.enter_product_detail_page( product['name']) product_detail_page.show_purchase_panel() product_detail_page.increase_purchase_count_to(product['count']) product_detail_page.do_purchase() edit_order_page = WAEditOrderPage(context.webapp_driver) context.page = edit_order_page
def not_test_webapp_01_success_purchase(self): login_page = LoginPage(self.driver) login_page.login('test1', 'test1') template_list_page = TemplateListPage(self.driver) template_list_page.load() template_list_page.select_template(u'简约风尚') template_list_page.preview_template(u'简约风尚') main_window, preview_window = self.driver.window_handles[:2] #print self.driver.window_handles self.driver.switch_to_window(preview_window) #期望商品 expected_products = [{ 'name': u'西湖醋鱼', 'category': u'分类4', 'price': '24.0' }, { 'name': u'武昌鱼', 'category': u'分类4', 'price': '23.0' }, { 'name': u'黄桥烧饼', 'category': u'分类3', 'price': '3.0' }, { 'name': u'东坡肘子', 'category': u'新分类1', 'price': '11.0' }] ''' 进入商品列表页 ''' home_page = WAHomePage(self.driver) index_page = home_page.enter_product_list_page() products = index_page.get_products() self.assert_list(products, expected_products) ''' 进入商品详情页 ''' product_detail_page = index_page.enter_product_detail_page(u'东坡肘子') expected_product = { 'name': u'东坡肘子', 'price': u'11.0', 'original_price': None, 'weight': u'5.0', 'postage_config_name': u'免运费', 'postage': None, 'detail': u'东坡肘子的详情' } self.assert_dict(expected_product, product_detail_page.get_product_info()) self.assertEquals(1, product_detail_page.get_purchase_count()) #调整购买数量 product_detail_page.increase_purchase_count(2) #加2个,变为3 self.assertEquals(3, product_detail_page.get_purchase_count()) product_detail_page.decrease_purchase_count(5) #减5个,维持在1 self.assertEquals(1, product_detail_page.get_purchase_count()) product_detail_page.increase_purchase_count(1) self.assertEquals(2, product_detail_page.get_purchase_count()) edit_order_page = product_detail_page.do_purchase() ''' 进入订单编辑页 ''' #验证商品列表 expected_order_products = [{ 'name': u'东坡肘子', 'price': u'11.0', 'purchase_count': 2 }] actual_order_products = edit_order_page.get_products() self.assert_list(expected_order_products, actual_order_products) #验证积分 self.assertEquals('20', edit_order_page.get_integral()) #验证订单总价 self.assertEquals('22.00', edit_order_page.get_total_price()) #验证收货人信息 expected_ship_info = { 'name': u'', 'province': u'-1', 'city': u'-1', 'district': '-1', 'address': u'', 'tel': u'' } actual_ship_info = edit_order_page.get_ship_info() self.assert_dict(expected_ship_info, actual_ship_info) #输入收货人信息 expected_ship_info = { 'name': u'郭靖', 'province': u'北京市', #北京市 'city': u'北京市', #北京市 'district': u'东城区', #东城区 'address': u'长安大街', 'tel': u'13811223344' } edit_order_page.input_ship_info(expected_ship_info) #提交订单 pay_order_page = edit_order_page.submit_order() ''' 进入订单支付页面 ''' expected_order_products = [{ 'name': u'东坡肘子', 'price': u'11.0', 'purchase_count': 2 }] expected_price_info = { 'products_price': '22.0', 'postage': None, 'coupon_money': None, 'integral_money': None, 'final_price': '22.0', } order_info = pay_order_page.get_order_info() self.assertEquals(u'郭靖 13811223344 北京市 北京市 东城区 长安大街', order_info['ship_info']) self.assertEquals(u'待支付', order_info['status']) self.assertEquals(u'无', order_info['bill']) self.assert_list(expected_order_products, order_info['products']) self.assert_dict(expected_price_info, order_info['price_info']) pay_interface_list_page = pay_order_page.do_payment() ''' 进入支付方式选择页面 ''' mock_pay_page = pay_interface_list_page.select_pay_interface(u'微信支付') ''' 进入模拟支付宝支付页面 ''' pay_result_page = mock_pay_page.pay() ''' 进入支付结果页面 ''' result_order_info = pay_result_page.get_order_info() self.assertEquals(u'待发货', result_order_info['status']) self.assertEquals(order_info['order_id'], result_order_info['order_id']) index_page = pay_result_page.click_back_button() ''' 返回商品列表页 ''' self.assertTrue(index_page.is_index_page()) #返回main window self.driver.switch_to_window(main_window)
def __buy(self, options={}): ''' 进入商品列表页 ''' home_page = WAHomePage(self.driver) index_page = home_page.enter_product_list_page() ''' 进入商品详情页 ''' product_detail_page = index_page.enter_product_detail_page(options.get('product', u'东坡肘子')) #调整购买数量 increase_count = options.get('purchase_count', 1) - 1 if increase_count > 0: product_detail_page.increase_purchase_count(increase_count) #hook hook_func = options.get('hook_product_detail_page', None) if hook_func: if hook_func(product_detail_page, options): home_page = product_detail_page.goto_webapp_home_page() return home_page edit_order_page = product_detail_page.do_purchase() ''' 进入订单编辑页 ''' #输入收货人信息 ship_info = options.get('ship_info', None) ignore_default_ship_info = options.get('ignore_default_ship_info', False) if not ship_info and not ignore_default_ship_info: ship_info = { 'name': u'郭靖', 'province': u'北京市', #北京市 'city': u'北京市', #北京市 'district': u'东城区', #东城区 'address': u'长安大街', 'tel': u'13811223344' } edit_order_page.input_ship_info(ship_info) #hook hook_func = options.get('hook_edit_order_page', None) if hook_func: if hook_func(edit_order_page, options): home_page = edit_order_page.goto_webapp_home_page() return home_page #提交订单 pay_order_page = edit_order_page.submit_order() ''' 进入订单支付页 ''' #hook hook_func = options.get('hook_pay_order_page', None) if hook_func: if hook_func(pay_order_page, options): home_page = pay_order_page.goto_webapp_home_page() return home_page pay_interface_list_page = pay_order_page.do_payment() ''' 进入支付方式选择页面 ''' mock_pay_page = pay_interface_list_page.select_pay_interface(u'微信支付') ''' 进入模拟支付宝支付页面 ''' pay_result_page = mock_pay_page.pay() ''' 进入支付结果页面 ''' index_page = pay_result_page.click_back_button() return index_page
def __enter_product_detail_page(self, product): home_page = WAHomePage(self.driver) index_page = home_page.enter_product_list_page() product_detail_page = index_page.enter_product_detail_page(product)
def step_impl(context, webapp_user_name, pay_interface_type, webapp_owner_name): if context.text: args = json.loads(context.text) else: args = {} if webapp_owner_name == u'订单中': edit_order_page = context.page else: home_page = WAHomePage(context.webapp_driver) home_page.load() product = args['products'][0] product_list_page = home_page.enter_product_list_page() product_detail_page = product_list_page.enter_product_detail_page( product['name']) product_detail_page.show_purchase_panel() product_detail_page.increase_purchase_count_to(product['count']) has_ship_info = __has_ship_info(webapp_user_name, webapp_owner_name) if (not has_ship_info) and (not 'ship_name' in args): #数据库中无ship info,且购买参数中也无ship info,创建默认ship info __create_default_ship_info(webapp_user_name, webapp_owner_name) has_ship_info = True product_detail_page.do_purchase() #判断是否有收货地址 if has_ship_info: edit_order_page = WAEditOrderPage(context.webapp_driver) else: edit_ship_address_page = WAEditShipAddressPage( context.webapp_driver) edit_ship_address_page.input_ship_info(args) edit_ship_address_page.click_submit_button() edit_order_page = WAEditOrderPage(context.webapp_driver) #使用积分 if args.get('use_integral', False): edit_order_page.use_integral() #使用优惠券 if 'coupon' in args: if args['coupon_type'] == u'选择': edit_order_page.use_coupon(args['coupon']) else: edit_order_page.input_coupon(args['coupon']) #输入商家留言 if 'customer_message' in args: edit_order_page.input_customer_message( args['customer_message'].strip()) if edit_order_page.is_encounter_error(): #编辑订单过程中出错 context.error_message = edit_order_page.get_error_message() else: edit_order_page.select_pay_interface(pay_interface_type) page = edit_order_page.submit_order() if page.is_webapp_pay_interface_list_page(): #进入订单支付 if pay_interface_type == u'不支付': context.page = page pay_result_page = None else: pay_interface_list_page = page pay_result_page = pay_interface_list_page.select_pay_interface( pay_interface_type) elif page.is_webapp_pay_result_page(): #订单直接支付完成 pay_result_page = page else: #提交订单出错 pay_result_page = None context.error_message = page.err_message context.pay_result_page = pay_result_page