随便写点东西,有的是网上借鉴,有的是自己体会,总之都是根据自己的需求进行优化的一些东西,随笔备忘录
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,需要一个配置文件去控制一些环境信息,比如测试地址,用户信息,保存测试过程中的一些值,方便后续测试用例的调用,配置文件可以是txt/xml/ini,Python的话一般用ini文件
在项目下新建Config文件夹,文件夹下新建config.ini文件

config.ini文件如下

[environment]
browser = 0[password]
pw = 666666[name]
cfgw = wendezhu
cfzjl = xigangwu
xtjl = jmwan[wms]
url = http://192.168.0.33:8090/login[tcmp]
url = http://192.168.0.16:8088/tcmp/[ta]
url = http://192.168.0.17:7002/trustWeb/login.jsp[ment]

environment是配置一些开关,browser用来配置浏览器,这里设定0是谷歌浏览器,1是火狐浏览器,2是IE浏览器(这里是用chrome)
password存放登录所需的密码
name存放不同用户登录所需的用户名
wms、tcmp、ta存放对应系统的url及其他信息
ment存放测试过程中需要保存的数据信息

接下来进行具体的实现。在framework文件夹下,新建Base_Page.py文件,并添加全局变量,为了提供配置文件的路径

path = getcwd.get_cwd()
config_path = os.path.join(path, 'Config/config.ini')
config = configparser.ConfigParser()
config.read(config_path, encoding="utf-8-sig")

Base_Page.py文件代码如下

# -*- encoding: utf-8 -*-from Logs.log import log1
from selenium.common.exceptions import NoSuchElementException
import getcwd
import os
import time
import configparser
from selenium import webdriverpath = getcwd.get_cwd()
config_path = os.path.join(path, 'Config/config.ini')
config = configparser.ConfigParser()
config.read(config_path, encoding="utf-8-sig")class BasePage:"""测试基类"""def __init__(self, driver):self.driver = driverdef config_get(self, key, section):'''读取配置文件值'''config_get = config.get(section, key)return config_getdef config_write(self, section, key=None, value=None):'''往配置文件写入键值'''if key is not None and value is not None:config.set(section, key, value)log1.info('在section:%s下写入%s=%s' % (section, key, value))with open(config_path, 'w', encoding='utf-8')as f:config.write(f)else:config.add_section(section)log1.info('新增section:%s' % section)with open(config_path, 'w', encoding='utf-8')as f:config.write(f)def config_delete(self, section, key=None):'''删除配置文件字段'''if key is not None:config.remove_option(section, key)log1.info('删除section:%s下key为:%s的记录' % (section, key))with open(config_path, 'w', encoding='utf-8')as f:config.write(f)else:config.remove_section(section)log1.info('删除section:%s' % section)with open(config_path, 'w', encoding='utf-8')as f:config.write(f)def open_browser(self,value):browser = self.config_get('browser', 'environment')log1.info('读取浏览器配置')url = self.config_get('url',value)log1.info('读取url:%s' % url)try:if browser == str(0):self.driver = webdriver.Chrome()log1.info('打开的浏览器为chrome')elif browser == str(1):self.driver = webdriver.Firefox()log1.info('打开的浏览器为Firefox')elif browser == str(2):self.driver = webdriver.Ie()self.driver.get(url)self.driver.maximize_window()log1.info('浏览器最大化')self.driver.implicitly_wait(10)log1.info('设置静态等待时间10秒')return self.driverexcept BaseException:log1.error('浏览器打开报错')def my_quite(self):"""关闭浏览器"""self.driver.quit()log1.info('关闭浏览器')@staticmethoddef isdisplayed(element):"""元素是否存在"""value = element.is_displayed()return value@staticmethoddef my_sleep(secondes):"""强制等待"""time.sleep(secondes)log1.info('暂停%d秒' % secondes)def get_img(self):"""截图"""path = os.path.join(getcwd.get_cwd(), 'screenshots/')  # 拼接截图保存路径rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))  # 按格式获取当前时间screen_name = path + rq + '.png'  # 拼接截图文件名# noinspection PyBroadExceptiontry:self.driver.get_screenshot_as_file(screen_name)log1.info("截图保存成功")except BaseException:log1.error("截图失败", exc_info=1)def find_element(self, selector):"""定位元素"""by = selector[0]value = selector[1]element = Noneif by in ['id', 'name', 'class', 'tag', 'link', 'plink', 'css', 'xpath']:# noinspection PyBroadExceptiontry:if by == 'id':element = self.driver.find_element_by_id(value)elif by == 'name':element = self.driver.find_element_by_name(value)elif by == 'class':element = self.driver.find_element_by_class_name(value)elif by == 'tag':element = self.driver.find_element_by_tag_name(value)elif by == 'link':element = self.driver.find_element_by_link_text(value)elif by == 'plink':element = self.driver.find_element_by_partial_link_text(value)elif by == 'css':element = self.driver.find_element_by_css_selector(value)elif by == 'xpath':element = self.driver.find_element_by_xpath(value)else:log1.error('没有找到元素')log1.info('元素定位成功。定位方式:%s,使用的值%s:' % (by, value))return elementexcept NoSuchElementException:log1.error("报错信息:", exc_info=1)self.get_img()  # 调用截图else:log1.error('输入的元素定位方式错误')def type(self, selector, value):"""输入内容"""element = self.find_element(selector)element.clear()log1.info('清空输入内容')# noinspection PyBroadExceptiontry:element.send_keys(value)log1.info('输入的内容:%s' % value)except BaseException:log1.error('内容输入报错', exc_info=1)self.get_img()def click(self, selector):"""点击元素"""element = self.find_element(selector)# noinspection PyBroadExceptiontry:element.click()log1.info('点击元素成功')except BaseException:display = self.isdisplayed(element)if display is True:self.my_sleep(3)element.click()log1.info('点击元素成功')else:self.get_img()log1.error('点击元素报错', exc_info=1)def use_js(self, js):"""调用js"""# noinspection PyBroadExceptiontry:self.driver.execute_script(js)log1.info('js执行成功,js内容为:%s' % js)except BaseException:log1.error('js执行报错', exc_info=1)def switch_iframe(self, selector):"""切换farm"""element = self.find_element(selector)# noinspection PyBroadExceptiontry:self.driver.switch_to.frame(element)log1.info('切换frame成功')except BaseException:log1.error('切换frame报错', exc_info=1)def switch_out(self):"""跳出iframe"""self.driver.switch_to.default_content()log1.info('跳出iframe成功')def get_title(self):"""获取title"""title = self.driver.titlelog1.info('当前窗口的title是:%s' % title)return title

随笔备忘记录-UI自动化测试-操作配置文件、封装公共类相关推荐

  1. 随笔备忘记录-Appium_Python_Api文档

    随便写点东西,有的是网上借鉴,有的是自己体会,总之都是根据自己的需求进行优化的一些东西,随笔备忘 APP功能测试: 1.业务逻辑正确性测试:产品文档.隐形需求----编写测试用例 2.兼容性测试: ( ...

  2. php 会员到期提醒_电脑上怎么在桌面加一个备忘记录提醒便签软件?

    电脑是大家日常工作中离不开的一款工具,使用电脑不仅可查询工作中所需的重要信息,还可以在电脑上记录一些工作备忘.工作任务等,为了避免忘记记录在电脑上备忘事项,大家可以选择一些能够在电脑桌面上查看且支持设 ...

  3. Tmux命令使用备忘记录

    Tmux命令使用备忘记录 本博客只是用于记录Tmux最简单的命令,方便查阅. 注:Tmux当中的快捷键使用前需要先使用Ctrl+b 1. 新建会话 方式一 $ Tmux 此方式默认创建 <ses ...

  4. (随笔备忘)装系统—— centos7下制作U盘启动盘还是失败待试,换大白菜

    1.首先将U盘格式化为ntfs格式 fdisk -l 查到U盘为/dev/sdb umount /dev/sdb mkfs.ntfs /dev/sdb-->报错:mkfs.ntfs comman ...

  5. js 刷新div_vue.js备忘记录(五) vue-router

    如果我们采用SPA(单网页应用)的设计方式,服务器会把前端文件一次性发过来,前端通过监听url的改变,选择展示那些内容,也就是前端路由 一. 如何改变url但是页面不刷新? 方式一: 改变哈希值has ...

  6. PyTorch单机多卡训练(DDP-DistributedDataParallel的使用)备忘记录

    不做具体的原理分析和介绍(因为我也不咋懂),针对我实际修改可用的一个用法介绍,主要是模型训练入口主函数(main_multi_gpu.py)的四处修改. 以上的介绍来源https://zhuanlan ...

  7. Excel拆分同一单元格的两行内容为两行(备忘记录)

    如何把一个单元格的两行内容改为二个单元格(每个单元格分别为修改之前的单元格的一行内容)? 如上图JIRA导出的数据中B列的单元格数据是两行,现在想拆分开,分别做成两列显示,以方便程序数据读取,那具体怎 ...

  8. 【工作技巧】Ubuntu备忘记录

    软件安装命令 FTP服务 安装命令sudo apt install vsftpd. 重启服务命令sudo /etc/init.d/vsftpd restart. 注:配置文件/etc/vsftpd.c ...

  9. 【备忘】mysql常用操作汇总

    1.增删改查 // 插入一条数据 insert into tableName values('liu','bei')// 删除一条数据 delete from tableName where last ...

最新文章

  1. POJ 1062 昂贵的聘礼
  2. mysql数据库充值网站程序_MySQL数据库安装
  3. VC实现最小化后在系统托盘显示
  4. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  5. 商务英语老师给的6个建议
  6. 简单工厂模式+工厂方法模式
  7. 超越MobileNet v3!华为诺亚、北大提出GhostNet​,使用线性变换生成特征图
  8. Kubernetes 网络原理
  9. Linux系统启动流程图
  10. 【Python-2.7】多种方式删除列表元素
  11. 23种设计模式(五)单一职责之装饰模式
  12. 什么叫pin脚的pad_普思海鸥脚H1102NL百兆网络变压器
  13. 代码高亮_安卓集成代码高亮显示开源包
  14. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  15. ssh 整合TOMCAT启动遇到错误
  16. 计算机软件能删除吗,怎么彻底清除电脑软件鲁大师?卸载对系统有影响吗?
  17. #详解# 激活函数中的 饱和、软饱和、硬饱和
  18. 过滤汉字和特殊字符的正则表达式
  19. Aliyun 阿里云 机器翻译调用 详解
  20. 静观花开花落,笑看云卷云舒

热门文章

  1. 中职计算机老师的一天,信息技术教师的一天
  2. 刷完leetcode的二叉树中等题,请允许我小小的嘚瑟一把
  3. 致敬达叔!Python带你回顾达叔出演过的作品与合作过的演员
  4. HDU 2188 JAVA
  5. 以太网巨人3Com退出历史舞台
  6. Linux:fd_set 结构体定义及使用
  7. 【译】使用 AngularJS 和 Electron 构建桌面应用
  8. 自己动手丰衣足食之图片放大镜
  9. 管理需因人而异,因时而变
  10. 揭秘:QQ号码能准确测出QQ主人年龄问题