基于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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
Python3实现从指定路径查找文件的方法
May 22 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
详解python中递归函数
Apr 16 Python
python的内存管理和垃圾回收机制详解
May 18 Python
python基于递归解决背包问题详解
Jul 03 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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
服务器端解压缩zip的脚本
2006/12/22 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
详解参数传递四种形式
2015/07/21 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
基本DOM节点操作
2017/01/17 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
python多线程操作实例
2014/11/21 Python
Python中使用SAX解析xml实例
2014/11/21 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
大学四年学习的自我评价分享
2013/12/09 职场文书
工作经验交流材料
2014/12/30 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers