基于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生成随机验证码(中文验证码)示例
Apr 03 Python
Python判断操作系统类型代码分享
Nov 22 Python
Python、Javascript中的闭包比较
Feb 04 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
python中正则表达式 re.findall 用法
Oct 23 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
Python中垃圾回收和del语句详解
Nov 15 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
详解python中的数据类型和控制流
Aug 08 Python
pycharm工具连接mysql数据库失败问题
Apr 01 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
操作Oracle的php类
2006/10/09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
php socket通信简单实现
2016/11/18 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
Python图算法实例分析
2016/08/13 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
离婚协议书怎么写
2015/01/26 职场文书
五四青年节活动总结
2015/02/10 职场文书
学术会议通知
2015/04/15 职场文书
趣味运动会加油词
2015/07/18 职场文书
初中团支书竞选稿
2015/11/21 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript