Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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, webapp_owner_name, integral_count):
    home_page = WAHomePage(context.webapp_driver)
    home_page.load()

    user_center_page = home_page.enter_user_center_page()
    actual = user_center_page.get_integral()

    expected = integral_count

    context.tc.assertEquals(expected, actual)
def step_impl(context, webapp_user_name, webapp_owner_name):
    home_page = WAHomePage(context.webapp_driver)
    home_page.load()

    user_center_page = home_page.enter_user_center_page()
    integral_log_page = user_center_page.enter_integral_log_page()
    actual = integral_log_page.get_logs()

    expected = json.loads(context.text)

    context.tc.assertEquals(expected, actual)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
	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)
Ejemplo n.º 11
0
	def not_test_webapp_04_ship_info(self):
		main_window = self.__start_preview_webapp()

		home_page = WAHomePage(self.driver)
		user_center_page = home_page.enter_user_center_page()
		ship_info_page = user_center_page.enter_ship_info_page()

		#验证收货人信息
		expected_ship_info = {
			'name': u'',
			'province': u'-1',
			'city': u'-1',
			'district': '-1',
			'address': u'',
			'tel': u''
		}
		actual_ship_info = ship_info_page.get_ship_info()
		self.assert_dict(expected_ship_info, actual_ship_info)

		#输入收货人信息
		expected_ship_info_huangrong = {
			'name': u'黄蓉',
			'province': u'江苏省',
			'city': u'无锡市',
			'district': u'滨湖区',
			'address': u'大街',
			'tel': u'13844332211'
		}
		ship_info_page.input_ship_info(expected_ship_info_huangrong)
		user_center_page = ship_info_page.submit()		
		
		#重新进入收货人页面
		ship_info_page = user_center_page.enter_ship_info_page()
		actual_ship_info = ship_info_page.get_ship_info()
		self.assert_dict(expected_ship_info_huangrong, actual_ship_info)

		'''
		开始购物
		'''
		#清空收货人信息
		ship_info = ShipInfo.objects.all().order_by('-id')[0]
		ship_info.ship_name = ''
		ship_info.ship_tel = ''
		ship_info.ship_address = ''
		ship_info.area = ''
		ship_info.save()
		#开始购物
		def hook_pay_order_page_1(pay_order_page, options):
			return True
		options = {
			'product': u'东坡肘子',
			'purchase_count': 1,
			'hook_pay_order_page': hook_pay_order_page_1
		}
		ship_info_page.return_to_webapp_home_page()
		home_page = self.__buy(options)

		'''
		进入收货人信息页面,验证收货人信息被修改
		'''
		user_center_page = home_page.enter_user_center_page()
		ship_info_page = user_center_page.enter_ship_info_page()
		expected_ship_info_guojing = {
			'name': u'郭靖',
			'province': u'北京市',
			'city': u'北京市',
			'district': u'东城区',
			'address': u'长安大街',
			'tel': u'13811223344'
		}
		actual_ship_info = ship_info_page.get_ship_info()
		self.assert_dict(expected_ship_info_guojing, actual_ship_info)
		#将收货人修改为"黄蓉"
		ship_info_page.input_ship_info(expected_ship_info_huangrong)
		user_center_page = ship_info_page.submit()

		'''
		再次购物
		'''
		#开始购物
		def hook_edit_order_page(edit_order_page, options):
			actual_ship_info = ship_info_page.get_ship_info()
			self.assert_dict(expected_ship_info_huangrong, actual_ship_info)
			return False
		def hook_pay_order_page_2(pay_order_page, options):
			return True
		options = {
			'product': u'武昌鱼',
			'purchase_count': 1,
			'ignore_default_ship_info': True,
			'hook_pay_order_page': hook_pay_order_page_2
		}
		ship_info_page.goto_webapp_home_page()
		home_page = self.__buy(options)

		'''
		进入订单页面,验证两个订单的收货人不一样
		'''
		#验证第一个订单
		user_center_page = home_page.enter_user_center_page()
		order_list_page = user_center_page.enter_all_order_list_page()
		pay_order_page = order_list_page.enter_order_page_by_index(1)
		order_info = pay_order_page.get_order_info()
		self.assertEquals(u'黄蓉 13844332211 江苏省 无锡市 滨湖区 大街', order_info['ship_info'])
		self.assertEquals(u'武昌鱼', order_info['products'][0]['name'])
		#验证第二个订单
		home_page = pay_order_page.goto_webapp_home_page()
		user_center_page = home_page.enter_user_center_page()
		order_list_page = user_center_page.enter_all_order_list_page()
		pay_order_page = order_list_page.enter_order_page_by_index(2)
		order_info = pay_order_page.get_order_info()
		self.assertEquals(u'郭靖 13811223344 北京市 北京市 东城区 长安大街', order_info['ship_info'])
		self.assertEquals(u'东坡肘子', order_info['products'][0]['name'])

		#结束测试
		self.__finish_preview_webapp(main_window)
Ejemplo n.º 12
0
	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
Ejemplo n.º 13
0
	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)
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
 def return_to_webapp_home_page(self):
     links = self.driver.find_elements_by_css_selector('#footerNavBar li a')
     links[1].click()
     from webapp.modules.mall.pageobject.webapp_page.home_page import WAHomePage
     return WAHomePage(self.driver)
Ejemplo n.º 16
0
 def goto_webapp_home_page(self):
     script = "return $('#homePageUrlZone').text();"
     url = 'http://dev.weapp.com%s' % self.driver.execute_script(script)
     self.driver.get(url)
     from webapp.modules.mall.pageobject.webapp_page.home_page import WAHomePage
     return WAHomePage(self.driver)