基于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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python中的闭包详细介绍和实例
Nov 21 Python
python搜索指定目录的方法
Apr 29 Python
Python中List.index()方法的使用教程
May 20 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python使用sessions模拟登录淘宝的方式
Aug 16 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Pygame框架实现飞机大战
Aug 07 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/03 咖啡文化
在php中取得image按钮传递的name值
2006/10/09 PHP
PHP新手上路(五)
2006/10/09 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
用vue写一个日历
2020/11/02 Javascript
python保存字符串到文件的方法
2015/07/01 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
后勤主管工作职责
2013/12/07 职场文书
公司股权转让协议书
2014/04/12 职场文书
电气自动化求职信
2014/06/24 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
python文件与路径操作神器 pathlib
2022/04/01 Python