集合 创建集合可以用set(),或者直接用{} set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} print(set_a) print(set_b) print( 别的到用的时候再去查吧 set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} print(set_a | set_b) # 并集 print(set_a & set_b 集合删除的3中方法: set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} c = set_a.pop() # 随机删除一个,返回值为删除的元素 print(c,set_a set_b.remove(3) # 指定删除一个元素 print(set_b) set_b.discard(7) # 也是指定删除一个元素 print(set_b) set_b.discard(2) # discard允许尝试删除不存在的元素,但是remove会报错 #setb.discard(2) print(set_b) 文件的操作 open()打开文件。
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据。 PS: 本文已经收入合集:《基于python的互联网软件测试开发(自动化测试)-全集合》,欢迎访问的查看: 基于Python的互联网软件测试开发 2 应用软件逻辑结构 数据库应用系统 可能是最典型的网络应用程序了 5 小结 本文对应用软件进行了逻辑上的分层,来阐述了软件自动化测试和基本原理,在文章的后半部分对目前流行的 智能硬件 所涉及的电子技术的自动化测试也进行了简单的探讨,希望能够给从来 自动化测试的人也有一点启发 在界面这一块做得不太好,但是却有强大的CLI交互,支持强大的脚本编写,对于实现自动化是很有帮助的。 后续将开始继续书写 python的自动化工具和编程应用了。
前言 UI自动化的学习,个人认为应该分五步走:环境搭建、元素定位、特殊场景处理、框架设计与搭建、测试平台开发。第一步的环境搭建其实没什么难度,都是固定的套路。 今天就来到了第二步的元素定位,可以说元素定位是整个UI自动化的基本功。 我查阅了大量的资料,在动手实践的基础上,整理总结了此文。 /A/B/C[position()>2]表示A元素下的B元素下的C元素下的位置号大于2的元素。 ") 2、通过子级节点查找父级节点 By.xpath("//div[@id='B']/..") 3、通过兄弟节点定位 By.xpath("//div[@id='B']/.. 同样以前文代码2中的form元素为基准,span元素、a元素和input元素都是它的后代元素。
config = yaml.load(conf) except ruamel.yaml.YAMLError as e: print("解析错误:",e) #(2) print(i, config['obj'][i]) #数组Array print(config['array'][0]['key1'], config['array'][1]['key2' ], config['array'][2]['key3']) #(3)修改与添加 config['NAME'] = "WeiyiGeek" config['add'] = " ('love', ['Computer', 'Cook', 'car'])]) array : [ordereddict([('key1', 'I')]), ordereddict([('key2' return holderlist def main(): global destination,\ holderlist if len (sys.argv) > 2:
config = yaml.load(conf) except ruamel.yaml.YAMLError as e: print("解析错误:",e) #(2) print(i, config['obj'][i]) #数组Array print(config['array'][0]['key1'], config['array'][1]['key2' ], config['array'][2]['key3']) #(3)修改与添加 config['NAME'] = "WeiyiGeek" config['add'] = " ('love', ['Computer', 'Cook', 'car'])]) array : [ordereddict([('key1', 'I')]), ordereddict([('key2' return holderlist def main(): global destination,\ holderlist if len (sys.argv) > 2:
TakesScreenshot screenshot = (TakesScreenshot) driver;
2、通过window.print_control_identifiers() # 打印'标识符',将控件及其后代的标识符打印到深度深度 from pywinauto import Application UpgradeDownload - R21.0.0001") window.print_control_identifiers() # 打印'标识符',将控件及其后代的标识符打印到深度深度 time.sleep(2) | | Dialog - 'Download' (L677, T475, R1163, B686) | ['Download', 'DownloadDialog', 'Dialog2' Button") | | | | Button - '否(N)' (L1063, T640, R1151, B670) | | ['否(N)', 'Button2' ", control_type="Text") | | | | TitleBar - '' (L680, T478, R1160, B500) | | ['2'
pwd=zkwi 提取码:zkwi1.下载到桌面2.解压压缩包3.进入文件夹双击exe文件图片如果需要结束,段落级别填-1,内容为空(回车即可)。这样在文件夹下回生成一个word文档。 2.相关代码from docx.shared import RGBColorfrom docx.shared import Ptfrom docx.oxml.ns import qn #设置中文字体需要该模块 str(data))# 设置字体大小,三号run.font.size = Pt(16)# 设置文字类型run.font.name = "楷体_GB2312"# 设置像微软雅黑这样的中文字体,必须添加下面2行代码 设置字体大小,三号 run.font.size = Pt(16) # 设置文字类型 run.font.name = "黑体" # 设置像黑体这样的中文字体,必须添加下面2行代码 加粗 run.font.bold = True # 设置文字类型 run.font.name = "仿宋_GB2312" # 设置像仿宋_GB2312这样的中文字体,必须添加下面2行代码
之前梳理了Saltstack自动化操作记录(1)-环境部署,下面说说saltstack配置及模块使用: 为了试验效果,再追加一台被控制端minion机器192.168.1.118 需要在master控制端机器上做好主机名映射关系 localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.101 linux-node1 192.168.1.102 linux-node2 ~]# cd /root/ [root@linux-node2 ~]# ls nginx-1.9.7 将被控制机的/mnt/heihei.tar.bz2包解压,解压默认放到被控制机的当前用户家目录(即 minion-192-168-1-102: minion-192-168-1-118: 到其中一台被控制机上检查: [root@linux-node2 ~]# cd /root/ [root@linux-node2 ~]# ls mnt [root@linux-node2 ~]# ls mnt/ huihui test
a = [1,2,3,4] print(1 in a) print(5 in a) print(1 not in a) print(5 not in a) 身份运算 is 和 is not。 a = [1,2,3,4] b = "hello" print(type(a)) print(type(a) is list) print(type(a) is str) print(type(b)) if True: print("Hello") 用三元运算赋值或运算 a = 1 if True else 2 b = 3 if False else 4 print(a,b) print("a") if True else print("b") print(1) if False else print(2) 试了一下使用逻辑运算and和or也能实现,不过不推荐。
testfile #2.使用YAML的块序列语法也可以定义变量 vars: - testvar1: testfile1 - testvar2: testfile2 #3.能够以类似"属性 "{{ tvar1 }}" "{{ testvar1 }}" #示例2. testfile2 #语法二示例: - testvar1: testfile - testvar2: testfile2 #语法三示例: nginx: conf80: /etc/nginx digest - Generic PBKDF2 Hashes cta_pbkdf2_sha1 - Cryptacular’s PBKDF2 hash dlitz_pbkdf2_sha1 - Dwayne }}, \n Testhostvar1 = {{testhostvar1}} , testhostvar2.thv1 = {{testhostvar2['thv2']}}" # local | CHANGED
testfile #2.使用YAML的块序列语法也可以定义变量 vars: - testvar1: testfile1 - testvar2: testfile2 #3.能够以类似"属性 "{{ tvar1 }}" "{{ testvar1 }}" #示例2. testfile2 #语法二示例: - testvar1: testfile - testvar2: testfile2 #语法三示例: nginx: conf80: /etc/nginx digest - Generic PBKDF2 Hashes cta_pbkdf2_sha1 - Cryptacular’s PBKDF2 hash dlitz_pbkdf2_sha1 - Dwayne }}, \n Testhostvar1 = {{testhostvar1}} , testhostvar2.thv1 = {{testhostvar2['thv2']}}" # local | CHANGED
如果如何通过先进的技术手段和自动化技术来提高物料单元的卸载收货过程,是我们这次探讨的内容。 https://v.qq.com/x/page/e0964ysugyy.html 关键词:全自动+批量+料箱 ---- 机械手智能识别卸载收货 https://v.qq.com/x/page/v0964x2z97z.html 关键词:机械手+视觉识别+料箱 ---- 收货下游,料箱自动化码垛 https://v.qq.com/x/page/p096446o3b8.html 关键词:码垛+料箱
接口自动化测试(2)— 使用 unittest 测试框架进行接口自动化测试在接口自动化测试中,unittest 是 Python 自带的单元测试框架,它也非常适合用于编写和执行接口测试。 通过集成 unittest 与 HTTP 请求库(如 requests),我们可以轻松实现对 RESTful API 或其他接口的自动化测试。 下面将结合实际案例,介绍如何使用 unittest 来进行接口自动化测试。1. 基本概念接口自动化测试的目标是验证接口的正确性、可靠性和稳定性。 2. 安装依赖在进行接口自动化测试时,首先需要安装 requests 库,它是一个流行的 HTTP 请求库,用于与接口进行交互。 通过合理组织测试代码,接口自动化测试可以帮助我们高效地验证接口的正确性,提升开发效率并减少回归错误。https://www.52runoob.com/archives/4898
前言 本章将会讲解Python编程实现自动化办公案例(2)前期回顾Python编程自动化办公案例(1) 获取某文件夹下所有文件的路径 。 import os 2.实现思路 (1).实现批量的读取某文件下的每个Excel文件数据 (2)获取文件夹下的所有文件的名称 #批量的读取某文件夹下的每个Excel文件数据 #获取某个文件下所有Excel
版本安装后启动Firefox出现异常:'geckodriver' executable needs to be in PATH selenium默默的升级到了3.0,然而网上的教程都是基于selenium2的 selenium+python环境搭配: selenium2+firefox46以下版本(无需驱动包,firefox喜欢偷偷升级,你懂的) selenium3+firefix47以上版本(必须下载驱动: geckodriver.exe,且添加到环境变量) 一、遇到异常 1.安装完selenium后,再cmd进入python环境 2.从selenium导入webdriver 3. 2.如果输入pip出现提示:Did not provide a command 说明pip环境有问题,临时解决办法,输入pip时候加上后缀pip.exe就可以了,具体原因看下一篇解决办法。 六、升级pip版本 1.在使用pip过程中如果出现下方红色区域字样,就是说pip版本过低了,建议升级 2.如何升级pip呢?
页面元素抓取 定位元素 定位元素的方法支持uiautomator的定位方法,也可以支持xpath和坐标定位 1.可以查看元素的resourceId属性 2.自动生成xpath定位方法 3.支持坐标点击,
线性测试 已经被淘汰了:线性测试就是一个脚本完成一个场景,代码基本没有复用,每一个脚本都要从头开始写——这哪行。 模块化与类库 这个就是分模块:有点类似面系那个对象,把功能(比如登录)单独拿出来,当下次用到这个功能的时候只需要调用(登录)模块即可。 提高开发效率 方便代码维护 数据驱动 数据与脚本分离——参数化。 关键字驱动 看过我的robot Framework了吧,那个就是关键字驱动,“关键字”其实就是把函数封装成关键字,用的时候直接把这个封装好的关键字拿过来用就OK了
浏览器操作 # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get("https://www.baidu.com") # 设置浏览器宽800,高400 driver.set_window_size(800, 400) sleep(3) # 最大化窗口 driver.maximize_window() driver.get("https
2.查看python发送get和post请求的案例 >>> import requests >>> r = requests.get('https://www.python.org') language' in r.content True ... or POST: >>> payload = dict(key1='value1', key2= "form": { "key2": "value2", "key1": "value1" }, ... } 二、发送post请求 1.用上面给的案例,做个简单修改,发个post请求 2.payload参数是字典类型,传到如下图的form里 ? 2.先导入json模块,用dumps方法转化成json格式。 3.返回结果,传到data里 ?