基于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文件和目录操作方法大全(含实例)
Mar 12 Python
python 排序算法总结及实例详解
Sep 28 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
python之文件读取一行一行的方法
Jul 12 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
基于python实现检索标记敏感词并输出
May 07 Python
Python Process创建进程的2种方法详解
Jan 25 Python
python实现会员信息管理系统(List)
Mar 18 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 Python
如何利用python创作字符画
Jun 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代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
js实现密码强度检验
2017/01/15 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python删除列表内容
2015/08/04 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python修改字典键(key)的方法
2019/08/05 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
学院书画协会部门岗位职责
2013/12/01 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
爱心捐书倡议书
2015/04/27 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript