基于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开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
Python中使用HTMLParser解析html实例
Feb 08 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 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中动态显示签名和ip原理
2007/03/28 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
原生js实现日期联动
2015/01/12 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
angular实现spa单页面应用实例
2017/07/10 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python语言生成水仙花数代码示例
2017/12/18 Python
简单了解python模块概念
2018/01/11 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
擅自离岗检讨书
2014/02/11 职场文书
结对共建工作方案
2014/06/02 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
iPhone13再次曝光
2021/04/15 数码科技
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技