基于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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python实现基本线性数据结构
Aug 22 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
python之pandas用法大全
Mar 13 Python
详解Python如何生成词云的方法
Jun 01 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Python实现Hash算法
Mar 18 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php开发工具之vs2005图解
2008/01/12 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
javascript 自动转到命名锚记
2009/01/10 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
ASP.NET中的身份验证有那些
2012/07/13 面试题
证券期货行业个人的自我评价
2013/12/26 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
企业承诺书怎么写
2014/05/24 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2014年护理部工作总结
2014/11/14 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
关于观后感的作文
2015/06/18 职场文书
装修安全责任协议书
2016/03/22 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python