基于python全局设置id 自动化测试元素定位过程解析


Posted in Python onSeptember 04, 2019

背景:

在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位。

一、python准备工作:

功能:用自动化的方式进行批量处理。 比如,你想要在大量的文本文件中执行查找/替换,或者以复杂的方式对大量的图片进行重命名和整理。

语法用例:

#!/usr/bin/python //脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定本脚本用什么解释器来执行,即:调用 /usr/bin 下的 python 解释器,推荐使用#!/usr/bin/env python 会去环境设置寻找 python 目录,可以增强代码的可移植性,不要写死路径
 
print "Hello, World!" // 输出内容

python script.py // 使用python变量调用脚本:#!/usr/bin/python 被忽略,等同于注释
python3 hello.py // pyhton3版本执行
 ./script.py // 在python程序执行:#!/usr/bin/python 指定解释器的路径

中文编码:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。查看:python -V

#!/usr/bin/python
# -*- coding: UTF-8 -*- //默认的编码格式是 ASCII 格式无法输出汉字
 print "你好,世界";
#!/usr/bin/python3 // python3版本
 print("Hello, World!")

下载:Python官网:https://www.python.org/

设置环境变量(一般自动设置cmd):

path=%path%;C:\Python //注意: C:\Python 是指Python的安装目录

下面几个重要的环境变量,它应用于Python:

变量名 描述
PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。
PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。
PYTHONCASEOK 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.
PYTHONHOME 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。

扩展:

1.集成开发环境(IDE:Integrated Development Environment): PyCharm

2.对于 Python 学习的新手来说,安装 Anaconda 包管理软件 是一个不错的选择

3.cmd 美化参考:https://zhuanlan.zhihu.com/p/31904974

二、实际应用:对指定元素添加id属性

正则函数:

re.match(pattern, string, flags=0) // 参数说明:正则规则,字符串,标志位,如果字符串不符合正则表达式,则匹配失败
re.search(pattern, string, flags=0) // 匹配整个字符串,直到找到一个匹配。

例:

#!/usr/bin/python3
import re 
line = "Cats are smarter than dogs"; // 猫比够更小
 matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
  print ("match匹配 : ", matchObj.group()) // No match
else:
  print ("No match!!")
matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
  print ("search匹配: ", matchObj.group()) // dogs
else: print ("No match!!")

实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import re
import random
count=0
allbutton=set()
def buttonid(m):
  return "<el-button id='kp_but_%s' " % str(round(random.random()*10000))

for root, dirs, files in os.walk(".\src", topdown=False):
  for name in files:
    
    if os.path.splitext(name)[-1] == ".vue":
      
      # print( os.path.splitext(name)[-1])
      # print(name)
      filePath=os.path.join(root, name)
      file=open(filePath, mode='r+',encoding='UTF-8')
      content=file.read()
      searchObj=re.search( r'<el-button\s+', content, re.M|re.I)
      if searchObj:
        
        content = re.sub(r'<(el-button\s+)(?![a-zA-Z=\'\.;\%\-:"\s0-9@]*:?id=[a-zA-Z;=\'\.\%\-:"+$\s0-9@]*)',buttonid , content)
        count+=1
        # allbutton.add(searchObj.group())

        file=open(filePath, mode='w',encoding='UTF-8')
        lent=file.write(content)
        print(lent)
      else:
        print('None')
        
      # print(content)
  # for name in dirs:
  #   print(os.path.join(root, name))
print(count)

使用说明:

1.将当前文件test.py放在项目根目录(与./src同级);

2.下载python执行该文件即可:

python test.py

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据类型_字符串常用操作(详解)
May 30 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Python单元测试简单示例
Jul 03 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python中的decimal类型转换实例详解
Jun 26 Python
python变量的存储原理详解
Jul 10 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
Python读写yaml文件
Mar 20 Python
Django框架 querySet功能解析
Sep 04 #Python
Django框架 查询Extra功能实现解析
Sep 04 #Python
Django框架 Pagination分页实现代码实例
Sep 04 #Python
python 动态迁移solr数据过程解析
Sep 04 #Python
Django框架 信号调度原理解析
Sep 04 #Python
Django Admin中增加导出Excel功能过程解析
Sep 04 #Python
Django Admin中增加导出CSV功能过程解析
Sep 04 #Python
You might like
点评山进PR-D3L三波段收音机
2021/03/02 无线电
php通过session防url攻击方法
2014/12/10 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
smarty模板数学运算示例
2016/12/11 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
javascript实用小函数使用介绍
2013/11/11 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
几种tab切换详解
2017/02/03 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
js实现点击生成随机div
2020/01/16 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
python实现汽车管理系统
2018/11/30 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
教师申诉制度
2014/01/29 职场文书
仓管员岗位责任制
2014/02/19 职场文书
校园安全演讲稿
2014/05/09 职场文书
学校与家长安全责任书
2014/07/23 职场文书
高三复习计划
2015/01/19 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers