基于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 获取 Linux 系统信息的代码
Jul 13 Python
利用Python抓取行政区划码的方法
Nov 28 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
Python requests发送post请求的一些疑点
May 20 Python
python3使用QQ邮箱发送邮件
May 20 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
python实现的生成word文档功能示例
Aug 23 Python
django为Form生成的label标签添加class方式
May 20 Python
keras分类模型中的输入数据与标签的维度实例
Jul 03 Python
python实现每天自动签到领积分的示例代码
Aug 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
图解JS原型和原型链实现原理
2020/09/15 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
Python简单日志处理类分享
2015/02/14 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
python字典与json转换的方法总结
2020/12/28 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python