- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 pytest_allure_jenkins_email
部署前准备运行环境:Windows 10Jenkins:2.289/msi文件https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows/2.289/Allure:2.13.9/zip文件https://github.com/allure-framework/allure2/releasesPython:3.7.5/exe文件https://www.python.org/downloads/release/python-375/
2021-04-25 15:30:40
245
1
原创 Python + Appium解决启动应用后的滑动引导页
from appium import webdriver# 启动参数desired_caps = {}desired_caps['platformName'] = 'Android' # 系统desired_caps['platformVersion'] = '7.1.2' # 系统版本desired_caps['deviceName'] = '127.0.0.1:62001' # 模拟器的IP,如果是真机则是写真机的名字desired_caps['appPackage'] = 'io.
2021-04-12 21:46:38
219
原创 基于python + appium的移动自动化搭建
JDK安装0.下载地址 https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html1.打开 计算机→属性→高级系统设置→高级→环境变量2.新建JAVA_HOME变量,变量值为JDK的安装路径 变量名:JAVA_HOME 变量值:D:\Program Files\Java\jdk1.8.0_2813.编辑Path变量 %JAVA_HOME%\bin %JAVA_HOME%\jre\bin4.新增
2021-04-10 21:57:57
117
原创 基于unittest的单元测试
一、什么是单元测试unittest- 1.单元测试: - 是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判断其具体含义,如C语言中单元指一个函数 function add(int a,int b){} Java里单元是指一个类,图形化的软件中可以指一个窗口或一个菜单 - 总的来说 ,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试- 2.uni
2021-03-31 21:24:04
187
原创 发送测试报告邮件
发送测试报告邮件- 邮件发送的基本过程与概念 - 1、邮件服务器:类似于现实生活中的邮局,他主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中 - 电子邮箱:用户在邮件服务器上申请的一个账户 - from:<xxx@xx.com> ---发件人 - to:<xxx@xx.com> ---收件人 - subject:hello ---主题 - body: 这是邮件内容 ---内容体- 2、邮件传输协议 - SMTP协议:全称为simple
2021-03-31 20:48:01
638
原创 cookie绕过登录
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimport timeif __name__ == '__main__': driver = webdriver.Chrome() driver.get("xxx") time.sleep(3) # driver.add_cookie({"name":"xxx", "value":.
2021-03-27 21:57:06
440
原创 alert的处理方式
alert的处理方式弹窗常用方法(需要先切换窗口 switch_to_alert())text:返回 alert中的文字信息。accept():表示接受dismiss():表示取消send_keys(keysToSend):发送文本至警告框keysToSend:将文本发送至警告框driver.get("https://www.baidu.com") title = driver.find_element_by_xpath('//*[@id="s-usersetting-top
2021-03-27 20:23:32
687
原创 selenium + tesseract + PIL识别验证码
前期准备tesseract-OCR下载、配置及基本使用下载tesseract-OCR下载地址: 下载源:https://digi.bib.uni-mannheim.de/tesseract/ 根据自身硬件情况下载对应版本即可配置环境变量1.将安装包直接一路安装2.打开 计算机-->邮件-->高级系统设置-->环境变量 在 系统变量-Path中添加tesseract的安装路径 新建系统变量 变量名:TESSDATA_PREFIX 值:D:\Tesser
2021-03-26 12:45:53
447
3
原创 高阶函数
高阶函数把函数作为参数传递,这样的函数称为高阶函数,高阶函数是函数式变成的体现。函数式编程就是指这种高度抽象的编程范式4.1 体验高阶函数abs()函数可以完成对数字求绝对值计算abs(-10) # 10round()函数可以完成对数字的四舍五入计算round(1.2) # 1round(108) # 24.2 内置高阶函数4.2.1 map()map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(python2)/迭代器
2021-03-14 12:58:16
74
原创 FileNotFoundError: [Errno 2] No such file or directoryh和FileNotFoundError: [WinError 2] 系统找不到指定的文件
FileNotFoundError: [Errno 2] No such file or directory:FileNotFoundError: [WinError 2] 系统找不到指定的文件。当对非当前路径下的文件或文件夹进行操作时,有些情况会出现报错情况,这种情况是缺少绝对路径导致的,可以在文件参数前加上绝对路径注意:在加绝对路径时,需要在末尾加上对应操作系统的路径分隔号,如Windows下是加两个\斜杠import osfor old_name in os.listdir('这真是文.
2021-03-14 12:53:54
177
原创 递归和Lambda表达式
一、递归2.1 应用场景是一种编程思想,应用场景如下查看/修改/删除文件夹下的文件算法2.1.1函数内部自己调用子级必须要有出口二、Lambda3.1 lambda的使用场景如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简版3.2 lambda的语法lambda 参数列表: 表达式lambda表达式的参数可有可无,函数的参数在lambda表达式红完全适用lambda表达式能接受任何数量的参数但只能返回一个表达式的值3.4 lambda的参数形式
2021-03-12 20:48:41
286
原创 函数进阶
目标变量的作用域多函数程序执行流程函数的返回值函数的参数拆包和交换两个变量的值引用可变和不可变类型一、变量的作用域变量的作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量局部变量所谓局部变量是定义在函数体内部的变量,只在函数体内部生效作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量全局变量指的是在函数体内、外都能生效的变量如何在函数体内部修改全局变量使用global关键字声明变量是全局变量global_variable
2021-03-11 20:20:18
84
原创 认识函数
函数定义语法def 函数名(参数): 代码1 代码2 ...... return 返回值result = 函数名(参数) # 得到函数的返回值函数的说明文档def add_number(x, y): """这是说明文档的书写格式""" return x + yhelp(add_number)print('======================')def add_number(x, y): """ 三个双引号之间点击换行 :param x
2021-03-09 21:12:45
94
原创 去掉pycharm中的波浪线
如何去掉pycharm中的波浪线File–>Settings–>Editor–>Color Scheme–>General–>Errors and Warnings
2021-03-09 14:02:59
129
1
原创 推导式
目标列表推导式字典推导式集合推导式列表推导式作用:用一个表达式创建一个有规律的列表或控制一个有规律的列表列表推导式又叫做列表生成式1.1while循环实现for循环实现推导式实现list_01 = [i for i in range(10)]...
2021-03-09 11:26:30
75
原创 公共方法
公共方法len():计算容器中元素个数str_01 = ‘hello world’ # len(str_01) -->11list_01 = [10, 20, 30, 40, 50]tuple_01 = (10, 20, 30, 40, 50)set_01 = {10, 20, 30, 40, 50}dict_01 = {‘name’: ‘tom’, ‘age’: 18, ‘gender’: ‘男’}del或del():删除max():返回容器中的元素最大值max(str_0
2021-03-08 16:43:12
95
原创 公共操作之运算符
一、运算符1. 加号 描述:合并 支持的容器类型:字符串、列表、元组 str_01 + str_02 list_01 + list_02 tuple_01 + tuple_022. 星号 描述:复制 支持的容器类型:字符串、列表、元组 str_01 * 数值 list_01 * 数值 tuple_01 * 数值3. in 描述:元素是否存在 支持的容器类型:.
2021-03-08 15:42:15
138
1
原创 dict字典
一、dict字典特点是可变数据类型是一个无序的数据集合以键值对的形式存在,key唯一,value可以修改赋值时无则创建,有则修改二、常用操作方式1.创建dict_01 = {}dict_01 = dict()dict_01 = {10, 20, 30}2.增加dict_01[key] = value3.修改dict_01[key] = value4.删除del dict_01[key]dict_01.pop(key):删除key,并返回被删除的value
2021-03-08 14:08:07
51
原创 tuple元组
元组的常见操作方法元组理论上不支持增删改,若元组中存在list时,可变相对list中的数据进行增删改1.查找index():查找某个数据,并返回其下标tuple_01.index(数据)count():查找某个数据,并统计其出现的次数tuple_01.count(数据)数据 in tuple_01:判断数据是否存在于元组中,是则True,否则False...
2021-03-08 13:49:04
40
原创 set集合
集合是可变类型一、创建集合 创建集合可以使用{}或set(),但是如果要创建空集合只能使用set(),因为{}用来创建空字典 set_03 = set('abcdefg') # {'f', 'b', 'e', 'c', 'g', 'a', 'd'}二、集合常见操作方法 1.增加 add():用来增加单一数据到集合中 集合有去重功能,如果追加的数据是集合已有数据,则什么事情都不做 set_01.add(数据).
2021-03-08 13:01:15
519
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人