web自动化测试BasePage封装

basepage封装的目的

为了运行脚本过程中,可以捕捉失败异常生成日志,优化 PageObjects的封装的功能,下面涉及等待、元素定位、输入文本、点击这些基本的操作进行封装。

# coding=utf-8
from time import sleep
from Common.Logger import Logger
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

""" 
    @基类:工具类,将常用的/与项目适配的相关函数,进行二次封装,变成自定义内容,便于测试调用
         存在的意义就是为了让页面对象类进行继承,从而获得基本的方法来实现页面的操作流程
    @常用项:
         访问url
         元素定位
         输入
         点击
         退出
         等待
"""

# 创建基类
class BasePage(object):
    # driver = webdriver.Chrome()

    loggers = Logger().getLogger()  # 日志输出

    # 构造函数
    def __init__(self, driver):
        self.url = 'xxxx'
        self.driver = driver
        self.driver.maximize_window() #设置窗口最大化
        self.driver.implicitly_wait(10)  # 设置隐式等待

    # 访问url
    def open(self, url):
        self.driver.get(url)

    # 重写元素定位方法
    def find_element(self, *loc, timeout=5, frequency=0.5):
        """
        :param loc: 元素定位
        :param timeout: 等待时间
        :param frequency: 等待时间间隔
        :return:
        """
        try:
            WebDriverWait(self.driver, timeout, frequency).until(EC.visibility_of_element_located(loc))
            return self.driver.find_element(*loc)
        except:
            self.loggers.info(u"%s 页面中未能找到 %s 元素" % (self, loc))

    # 重写定义send_keys方法
    def send_keys(self, *loc, text):
        """
        :param loc: 元素定位
        :param text: 输入值
        :return:
        """
        el = self.driver.find_element(*loc)
        try:
            el.send_keys(text)
            self.loggers.info("Had type \' %s \' in inputBox" % text)
        except:
            self.loggers.info("元素输入文本失败!")

    # 清除文本框
    def clear(self, *loc):
        """
        :param loc: 元素定位
        :return:
        """
        el = self.driver.find_element(*loc)
        try:
            el.clear()
            self.loggers.info("Clear text in input box before typing.")
        except:
            self.loggers.info("元素清除文本失败!")

    # 点击元素
    def click(self, *loc):
        """
        :param loc: 元素定位
        :return:
        """
        el = self.driver.find_element(*loc)
        try:
            el.click()
            self.loggers.info("The element \'%s\' was clicked." % el.text)
        except:
            self.loggers.info("点击元素失败!")

    # 等待
    def wait(self, time_):
        sleep(time_)

    # 退出
    def quit(self):
        self.driver.quit()

    # 获取文本的值
    def get_text(self, *loc):
        """
        :param loc: 元素定位
        :return:
        """
        return self.driver.find_element(*loc).text

    # 获取 alert 弹出框的文本信息
    def get_alert_text(self):
        """
        获取 alert 弹出框的文本信息
        :return: String
        """
        return self.driver.switch_to.alert.text

basepage.py文件中初始化函数和封装基础函数,在封装基础函数的同时,将异常捕获、日志信息等操作都封装到了自定义的函数中,调用后不用再对函数进行异常捕获,使用起来比较方便、简介、结构清晰、出现问题容易查找问题等

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值