zoukankan      html  css  js  c++  java
  • Python3+Selenium Web自动化测试案例分享⑷——页面基础类方法

    本章节主要是封装selenium库的一些基础操作方法,如:元素定位、截图、元素通用操作、切换frame、警示框处理等等,basePage是最底层操作页面的方法,只要是web页面一些常用的操作都可以写在该基类中,后面有需要的地方直接调用即可。

    一、basePage.py

    # _*_ coding:utf-8 _*_
    import time,os
    from selenium.webdriver.support.ui import WebDriverWait             #导入显示等待等待
    from selenium.webdriver.support import expected_conditions as EC    #导入判断方法
    from Public import getPathInfo,log
    
    log_info =log.logger                                                #log方法
    
    class BasePage(object):
        """
        基本类,用于所有页面的继承
        """
        def __init__(self, driver):
            self.driver = driver
    
        def _open(self, url, pagetitle):
            """
            打开网页
            :param url: 网址
            :param pagetitle: 关键字
            """
            self.driver.maximize_window()               #浏览器最大化
            self.driver.implicitly_wait(30)             #显示等待
            self.driver.get(url)                        #打开指定网站
            assert pagetitle in self.driver.title, log_info.error("页面源码中不存在该关键字!")   #断言打开页面是否正确
    
        def find_element(self, *loc):
            """
            重写定位元素
            """
            try:
                #WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(loc))                   #判断元素是否存在
                WebDriverWait(self.driver, 10).until(lambda driver: driver.find_element(*loc).is_displayed())  #判断元素是否存在
                return self.driver.find_element(*loc)                   #返回定位元素
            except Exception as e:
                log_info.error('%s页面未找到%s元素' % (self, loc))
                self.get_windows_img()                                  #截图
    
        def switch_frame(self, loc):
            """
            切换frame
            """
            return self.driver.switch_to.frame(loc)
    
        def script(self, src):
            """
            定义script方法,用于执行js脚本
            """
            self.driver.execute_script(src)
    
        def get_windows_img(self):
            """
            截图
            """
            image_path=getPathInfo.join_cwd('Report\Images\')             #拼接截图存放目录
            if not os.path.exists(image_path):                              #判断目录是否存在
                os.mkdir(image_path)                                        #创建目录文件
            nowtime=time.strftime("%Y%m%d%H%M%S")                           #当前时间变量
            image_name=image_path +nowtime+ '.png'                          #截图路径
            try:
                self.driver.get_screenshot_as_file(image_name)              #截图
                log_info.info("截图保存地址:%s" % image_name)
                print('screenshot:', nowtime+'.png')                        #打印screenshot关键字,报告中显示截图
            except NameError as e:
                log_info.error("截图保存失败! %s" % e)
                #self.get_windows_img()
    —————————————————————————————— 选择正确的事、再把事做正确 ——————————————————————————————
  • 相关阅读:
    夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
    夯实Java基础系列18:深入理解Java内部类及其实现原理
    夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
    夯实Java基础系列16:一文读懂Java IO流和常见面试题
    夯实Java基础系列15:Java注解简介和最佳实践
    TClientDataSet数据源设置
    重装Delphi10.2的IDE必要设置
    自制软件的出路在何方?
    FMX相关
    Delphi Live Bindings 初探
  • 原文地址:https://www.cnblogs.com/airb/p/13490282.html
Copyright © 2011-2022 走看看