python selenium ddt 数据驱动测试(七)

5、页面操作

14633667-03500da559aa08fa.png

pay_page.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-04-15 09:00:00
# @Author  : Canon
# @Link    : https://www.python.org
# @Version : 3.6.1

import datetime
from common import basepage
from common import xml_utils
from common.conf_utils import Gateway

# 当前年份的下一年
YEAR = str(datetime.datetime.now().year + 1)
# 当前月份
MONTH = '0{0}'.format(datetime.datetime.now().month)
# 格式: 月/年 "0119"
MON_YEAR = MONTH + YEAR[2:]

# 读取 xml 文件
xml_obj = xml_utils.XmlUtils(Gateway().read_path("xml", "pay"))


class Pay(basepage.Action):
    """
    测试页面
    """
    def __init__(self, selenium_driver):
        super().__init__(selenium_driver)
        dict_val = xml_obj.get_attr_by_tag('pageName', 'paypage', 'locator')

        # ----- 定位器,通过元素属性定位元素对象 ----- #
        # CardNumber
        self.num = dict_val['CardNumber']
        # "月份" 下拉框
        self.mon = dict_val['ComboboxMonth']
        # "年份" 下拉框
        self.year = dict_val['ComboboxYear']
        # SecureCode
        self.code = dict_val['SecureCode']
        # "PAY_NOW" 按钮
        self.pay = dict_val['PayNow']

    # ----- 页面操作 ----- #
    def loc_frame(self):
        self.switch_frame("iframe", 1)

    def input_card_number(self, card_number):
        # 输入 CardNumber
        self.send_keys(self.num, card_number)

    def select_card_month(self):
        # 选择 "月份" 下拉框
        self.select_combobox(self.mon, MONTH)

    def select_card_year(self):
        # 选择 "年份" 下拉框
        self.select_combobox(self.year, YEAR)

    def input_secure_code(self, secure_code):
        # 输入 SecureCode
        self.send_keys(self.code, secure_code)

    def click_pay_now(self):
        # 点击 "PAY_NOW" 按钮
        self.click_button(self.pay)

14633667-ffa5a3f9cb01cdcb.png

pay.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-04-15 09:00:00
# @Author  : Canon
# @Link    : https://www.python.org
# @Version : 3.6.1

import pageobj.gateway.pay_page as Pay
from common.logger import Log


class PayAction(object):
    def __init__(self, driver):
        self.driver = driver
        self.log = Log()

    def put_pay(self, test_data):
        # 提交支付
        pay_page = Pay.Pay(self.driver)
        self.log.info("----- 页面链接: %s -----" % self.driver.current_url)
        if '/web/vpay' in self.driver.current_url:
            # 切换 frame
            pay_page.loc_frame()
        num = test_data['CardNumber']
        self.log.info("输入 Card Number: {}".format(num))
        pay_page.input_card_number(num)
        self.log.info("选择年月")
        pay_page.select_card_month()
        pay_page.select_card_year()
        self.log.info("输入 Secure Code")
        pay_page.input_secure_code(test_data['SecureCode'])
        self.log.info("点击 PAY NOW")
        pay_page.click_pay_now()

转载于:https://www.jianshu.com/p/bf623ba8f376

猜你喜欢

转载自blog.csdn.net/weixin_34417635/article/details/91057439