基于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爬虫之爬虫的定义及URL构成
Nov 04 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
一个Python最简单的接口自动化框架
Jan 02 Python
python 多个参数不为空校验方法
Feb 14 Python
python开发游戏的前期准备
May 05 Python
Django框架验证码用法实例分析
May 10 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
python如何判断IP地址合法性
Apr 05 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python描述器descriptor详解
2015/02/03 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python中的filter()函数的用法
2015/04/27 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python获取引用对象的个数方式
2019/12/20 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Python更换pip源方法过程解析
2020/05/19 Python
初学者学习Python好还是Java好
2020/05/26 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
中青班党性分析材料
2014/02/16 职场文书
感恩的演讲稿
2014/05/06 职场文书
销售类求职信
2014/06/13 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
民用住房租房协议书
2014/10/29 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers