- 博客(40)
- 收藏
- 关注
原创 flask框架报错解决方法
解决方法:报错jinja2.exceptions.TemplateNotFound,template没找到,由于我之前直接将.html文件和.py文件直接放在同一目录下,经了解,需要新增一个 templates目录,将.html文件放在templates目录下,templates目录和.py文件需保持同一级。解决方法:报错Not Found,url不存在,可能由于url地址没填写正常,程序默认是进入其根目录,代码加上根目录的路由即可 @app.route(‘/’)2、报错 Not Found。
2023-11-13 11:17:19
606
原创 pytho实例--pandas读取表格内容
封装后,调试一下,可以正常读取数据库内容,使用pandas模板读取excel表中的数据,进行运算。前言:由于运维反馈帮忙计算云主机的费用,特编写此脚本进行运算。计算过程中需用到数据库中的数据,故封装了一个读取数据库的类。如图,有如下excel数据。
2023-09-26 17:56:51
204
原创 selenium--多线程启动浏览器
4、把多个浏览器的名称列举出来,通过循环的方式把浏览器参数传入到用例中。这里简单的列举下如何启动多个浏览器,这里先把思路进行列出来,根据思路进行一步步写。3、通过多线程进行调用封装的用例,每启动1次线程,就运行一次用例。1、先把浏览器驱动单独封装起来,调用时,直接选取对应的驱动。分别打开谷歌和火狐浏览器,均输入内容进行搜索。2、把想要执行的用例进行也单独封装起来。
2023-05-25 17:04:13
859
原创 通过ddddocr识别验证码
原理:直接获取验证码base64数据,然后OCR解析进行处理。这样就能得到图片验证码字符串了。1、安装ddddocr。
2023-05-24 16:36:58
1403
原创 通过cookie跳过验证码登录
以百度为例1、准备阶段:手动登录百度账号,获取其cookie值2、代码阶段driver.get("https://www.baidu.com/")time.sleep(1)driver.maximize_window()# 手动获取到的cookie值cookie_baiduid = {'name': 'BAIDUID', 'value': 'xxxx'}cooike_bduss = {'name': 'BDUSS', 'value': 'xxxx'}# 添加cookiedriver.
2022-03-17 15:00:38
2181
转载 深入理解Cookie+Session
这篇文章让你彻底看懂 Cookie,Session这两者的区别,相信大家看完肯定有收获!一、Cookie1991 年 HTTP 0.9 诞生了,当时只是为了满足大家浏览 web 文档的要求 ,所以只有 GET 请求,浏览完了就走了,两个连接之间是没有任何联系的,这也是 HTTP 为无状态的原因,因为它诞生之初就没有这个需求。但随着交互式 Web 的兴起(所谓交互式就是你不光可以浏览,还可以登录,发评论,购物等用户操作的行为),单纯地浏览 web 已经无法满足人们的要求,比如随着网上购物的兴起,需要记录用
2022-03-10 16:55:41
401
1
转载 如何搭建接口自动化测试框架?
在工作中,当一个项目确定要做接口自动化测试之后,我们一般面临两种情况:1.公司已经在做自动化测试,自己成为其中的一员这种情况下,我们需要做的就是快速了解现成的自动化测试框架,多看项目代码,了解团队的业务逻辑、代码风格,快速融入进去。2.公司之前没有在做,需要你0-1搭建。这时候就需要我们去根据项目和自身技能的具体情况,去规划整个自动化测试框架。一、自动化测试框架规划思路1.选择语言pythonjava自己擅长哪个选哪个,推荐python2.编程工具选型pycharmvscode自己
2022-03-07 18:11:26
4550
3
原创 EC模块与WebDriverWait结合使用
selenium中,经常会出现元素还没有加载出来,浏览器找不到元素而报错的问题,设置等待是保证脚本运行的一个重要手段,常用的等待有三种–强制等待、隐式等待、显示等待。本文主要介绍显示等待和EC模块结合使用一、强制等待强制等待也可以叫做固定等待,就是我们常用的sleep(),多用于调试、观察效果等,实际项目中不推荐使用二、隐式等待语法:driver.implicitly_wait(最大等待时间x秒)参数是最大等待时间,只要在此规定时间内整个页面加载完成即可操作元素设置一次,则全局(对应浏览器的整
2022-03-07 15:13:12
1251
原创 chrome driver 环境问题
运行自动化测试时报错:This version of ChromeDriver only supports Chrome version 95 Current browser version is 97.0.4692.99由于你本机安装的chrome和你下载的chrome driver不匹配,下的是95版本的chrome driver解决办法:下载你本机安装的chrome浏览器对应的chrome driver版本第一步、打开你的谷歌浏览器,在地址栏输入chrome://version/可以看到我的
2022-03-02 14:42:54
8896
1
原创 pytest框架--参数化(parametrize装饰器)
说明:软件测试中,输入相应值,检查期望值,是常见测试方法。在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖测试范围,所以,需要参数化来传递多组数据。pytest的测试用例参数化使用如下装饰器即可完成。参数化:parametrize装饰器@pytest.mark.parametrize(argnames, argvalues)argnames:以逗号分隔的字符串argvalues: 参数值列表,若有多个参数,一组参数以元组形式存在,包含多组参数的所有参数,以元组列表形式存
2022-02-23 15:40:49
978
原创 pytest框架--前后置(setup/teardown+fixture装饰器)
pytest前后置处理有2种方法1、通过setup/teardown实现import pytestclass Test_C(): def setup(self): # 方法前置 print('\n-----函数开始-----', end='') def teardown(self): # 方法后置 print('\n-----函数结束-----', end='') def setup_class(self):
2022-02-18 15:46:59
623
原创 Python基础--loguru日志
前言:loguru 库的使用可以说是十分简单,我们直接可以通过导入它本身封装好的logger 类就可以直接进行调用。loguru 本身就是一个已经实例化好的对象,如果没有特殊的配置需求,那么自身就已经带有通用的配置参数;同时它的用法和logging库输出日志时的用法一致。loguru 支持输出到多个文件,分级别分别输出,过大创建新文件,过久自动删除等等。1、安装loguru:pip install loguru2、基础用法:from loguru import loggerlogger.in
2022-02-16 18:24:59
1460
5
原创 Python基础--读取yaml文件
一、YAML语法基础知识1、YAML基本语法规则如下:大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释2、YAML 支持的数据结构有三种对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的、不可再分的值3、YAML 对象对象键值对使用冒号结构表示 k
2021-12-21 15:10:09
1116
原创 postman环境变量,参数关联
前言:在进行接口测试的时候,在不同的场景下或者不同的集合下面有一些变量是不同的。这时候我们可以通过设置postman的环境变量,来进行快速的切换。Postman 允许定义自己的环境变量(Environment),最常见的是将测试 URL 进行定义成变量的形式,这样随着你的域名怎么变,URL 就不用变更,非常方便一、postman 中的变量作用域Global:全局变量,(可以将错误的提示信息设置成全局变量)Environment:环境变量,比如可以将需要测试的 domain 设置成环境变量Local
2021-12-13 17:06:33
7587
原创 python配置虚拟环境
一、建立虚拟环境1、cmd 在python的Scripts目录下(E:\Python\Scripts),输入 pip install virtualenv/2、创建虚拟环境目录 virtualenv env3、激活虚拟环境:cmd 在E:\Python\Scripts\env\Scripts 目录下,输入activate.bat二、在Pycharm中配置virtualenv环境1、打开Pycharm,在File>Settings>Project>Project Interp
2021-12-10 11:55:19
3005
原创 pytest框架--allure报告用例参数详解
原文链接:http://www.manongjc.com/detail/18-uxknglitylthfjx.html1、案例描述:#test_allure_demo.pyimport pytestimport allure@pytest.fixture(scope="session")def login(): print("前置条件:登录")@allure.step("步骤1")def step_1(): print("操作步骤----1")@allure.step(
2021-12-07 18:09:10
873
原创 pytest基础知识
1、安装pytestpip install -U pytest # 通过pip安装2、运行方法创建一个简单的实例,如下def test_one(): print("我的方法1") x = "this" assert "h" in xdef test_two(): print("我是方法2") y = 5 assert y > 6切换至该文件所在的目录,输入命令:py.test test1.py (test1.py 为文件名)
2021-12-06 16:30:13
802
原创 安装HTMLTestRunner
1、什么是HTMLTestRunner?HTMLTestRunner是一个第三方的unittest HTML报告库,由于unittest能够输出txt格式的文本执行报告,但文本报告太过简陋,是不是想要更加高大上的HTML报告?但unittest自己可没有带HTML报告,我们只能求助于外部的库了——HTMLTestRunner.py。2、安装HTMLTestRunnerHTMLTestRunner是Python标准库的unittest模块的扩展,无法通过pip安装。正确操作姿势为:将以下代码(该代码仅
2021-11-23 18:29:53
3311
5
原创 Python基础--os.path模块
常用os.path模块的使用方法os.path.dirname(path) 返回文件目录os.path.abspath(path) 返回绝对路径os.path.join(path1,path2) 把目录和文件名合成一个路径栗子:当前文件路径为:E:/Project/untitled/study/test.py1、os.path.dirname()用法:import osprint(os.path.dirname(__file__)) # 返回当前文件的目录print(os.path.di
2021-11-10 14:51:58
722
原创 Python爬虫--IP代理池的构建
一、为什么要使用代理IP1.爬虫的时候,被爬网站是有反爬虫机制的,如果使用一个IP反复访问一个网页,就容易被出现IP限制,无法再对网站进行访问,这时就需要用到代理IP。2.如果工作任务量大,抓取速度快,目标服务器会容易发现,所以就需要用代理IP来换IP后再抓取。3.爬虫在抓取一个网站数据的时候,有非常大的几率会被拉黑封锁。使用代理IP更换不同IP,对方网站每次都以为是新用户,自然就没有拉黑的风险。我们用代理IP就是为了隐藏自身IP,防止自身的IP被封锁。作者:IPIDEA全球HTTP链接:htt
2021-08-04 18:12:01
1404
原创 Python爬虫--用户代理池的构建
为什么要使用用户代理池:如果我们用浏览器伪装,仅用一个浏览器标识,如果对方服务器的反爬手段高,我们这一个一直访问很容易被抓到,这时候我们可以建一个用户代理池,随机进行访问,增加我们的成功率思路:将多个用户代理组建为一个池子,在访问的时候每次随机调用不同的用户代理。以爬取糗事百科段子为例,可参考以下链接:https://blog.csdn.net/weixin_45422695/article/details/119112023代码如下:import urllib.requestimport
2021-07-26 17:40:25
511
原创 Python爬虫--爬取糗事百科段子
代码如下:import urllib.requestimport reheaders = ("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36")opener = urllib.request.build_opener()opener.addheaders = [headers]# UA安装为全局# 使用urllib
2021-07-26 16:32:40
192
原创 Python爬虫--浏览器伪装
1、浏览器伪装主要是伪装头文件的用户代理,即"User-Agent":如何得到"User-Agent":打开百度,按F12,切换到"Network",刷新页面,右侧点击任意接口,切换到“Headers”下的“Request Headers”2、实例:import urllib.requesturl = "http://blog.csdn.net"# 头文件格式header=("User-Agent",用户代理值)header = ("User-Agent", "Mozilla/5.0 (Wi
2021-07-23 18:37:46
828
原创 Python爬虫--异常处理
1、URLError出现的原因:1)连不上服务器2)远程url不存在3)无网络4)触发HTTPError2、实例:import urllib.requestimport urllib.errortry: urllib.request.urlopen('http://blog.csdn.net')except urllib.error.URLError as e: if hasattr(e, "code"): print(e.code) if hasa
2021-07-23 18:28:11
288
1
原创 Python爬虫-爬取豆瓣出版社信息
爬取豆瓣出版社信息# 爬取豆瓣出版社import urllib.requestimport reurl = 'https://read.douban.com/provider/all'# UsageAgent 为用户代理,伪装成为用户正常的访问headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4
2021-05-27 18:45:52
625
原创 Python爬虫-爬取CSDN网页内容
学习爬虫,需了解正则,详见https://blog.csdn.net/weixin_45422695/article/details/117334140?spm=1001.2014.3001.55011、爬取CSDN网站首页# 爬取CSDN网站首页import urllib.requestdata = urllib.request.urlopen('http://edu.csdn.net').read().decode()print(data)2、爬取CSDN课程页面的QQ群# 爬取C
2021-05-27 18:30:33
895
原创 Python爬虫-正则表达式
Python爬虫-正则表达式1、匹配普通字符2、匹配非打印字符3、匹配通用字符4、匹配原子表5、元字符6、模式修正符7、贪婪模式与懒惰模式8、正则表达式函数9、实例a.匹配.com 和.cn网址b.匹配电话号码...
2021-05-27 17:54:03
376
原创 Python基础-小结
这里写自定义目录标题1、使用pip安装whl文件时,不知选择32位还是64位版本安装?打开cmd,输入 python ,显示为32位即选择32位安装,显示为64位即选择64位安装2、文件路径的处理?如:以打开文件为例,文件路径为:“C:\Users\阿娇啊\Desktop\a\abc.txt”实际运用时,需写为:fh1 = open('C:\\Users\\阿娇啊\\Desktop\\a\\abc.txt', 'w')fh2 = open('C:/Users/阿娇啊/Desktop/a/ab
2021-05-25 17:06:20
84
原创 Python基础--连接xshell
Python 连接xshellfrom paramiko import SSHClient, AutoAddPolicyssh = SSHClient()# 允许连接不在know_hosts文件里的主机ssh.set_missing_host_key_policy(AutoAddPolicy())# 连接服务器ssh.connect(hostname='192.168.2.115', port=22, username='root', password='password')# 执行命令c
2021-03-18 11:33:26
2715
3
原创 Python基础--连接数据库
Python–连接数据库目的:python通过ssh连接数据库import MySQLdbfrom sshtunnel import SSHTunnelForwarderimport reclass SSHMySQL(object): def __init__(self): self.server = self.get_server() self.conn = self.get_conn() self.cur = self.conn.cu
2021-03-18 11:11:27
136
原创 selenium 一个标签内多个文本元素定位问题(附带分割字符串方法)
selenium 一个标签内多个文本元素定位问题(附带分割字符串方法)目的:如图,自服务购买主机页面,获取“账户余额”和“本次订单应付”金额值方法(错误方法):直接定位到“余额”和“本次订单应付”的金额值遇到的问题:如图:前提:本次订单应付金额值所在的span标签,有2个文本元素预期:可正常定位,通过xpath定位后,价格元素高亮显示,获取元素文本时,返回字符串类型实际:无法正常定位,获取到了价格值,但并未高亮显示,实际运行时,提示元素定位失败解决方法:1.如图:直接定位其上级标签di
2021-01-15 14:49:37
2042
1
原创 python基础-xlrd读取表格
一、Xlrd模块介绍1、xlrd模块用于读取excel表格数据;2、支持xlsx和xls格式的excel表格;3、安装方式:pip3 install xlrd;二、基本函数1.工作表的操作:.open_workbook() 打开文件.sheets() 获取所有sheet的对象,以列表的形式展示.sheets()[0] 通过索引顺序获取工作表.sheet_by_name(sheet_name) 通过名称获取工作表2.行的操作:table.nrows 获取该sheet中的
2020-12-03 15:36:23
2452
2
原创 axure 原型图 基础知识介绍
Axure基础知识介绍一. Axure简介是一款专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的人员能够快读创建应用软件或web网站的架构图、流程图、原型和规则说明文档,支持多人协作和版本控制管理二.Axure安装下载地址:https://pan.baidu.com/s/1xby7aTSr14q9phvqqzX20g提取码:olpp汉化版:https://pan.baidu.com/s/1ZD8lTJKZmNbEU_-ZLxzFDQ提取码:ugz5汉化方法:将 AxureRP9
2020-11-18 11:27:45
3754
1
原创 配置Git环境
配置Git环境前言:突然翻到以前的配置git环境的笔记,怕以后找不到了,也为了知识共享,记录下来,共勉!没有截图,以后如果需要重新配置的话,再附上截图1.下载安装Git2.注册git账号:http://192.168.3.52/users/sign_in3.配置ssh:(若有.ssh目录则忽略步骤a)a.新增.ssh:右键点击git bush here,输入ssh−keygen−trsa−C“1281579627@qq.com”,然后按三次Enter.(默认在C盘用户下,.ssh)b.找到公钥:右
2020-10-10 09:43:59
253
原创 selenium 上传文件、图片
selenium 上传文件、图片前提条件:定位的元素的 type 属性 必须是 file ( type=‘file’ )
2020-08-05 10:19:23
240
原创 selenium-webUI自动化点击按钮操作无反应问题
selenium-webUI自动化点击按钮操作无反应问题如:此时,“确定”按钮元素定位为:解决办法:因为“点击”操作对“button”类型有效,对“span”类型无效,所有需要在后面加上一个“/…”,返回到“button”类型OK,已经可以执行“点击”操作了...
2020-07-06 16:15:50
2226
原创 Python安装虚拟环境virtualenv步骤
Python安装虚拟环境virtualenv步骤安装virtualenv1.在cmd命令行输入pip install virtualenv(或者pip3 install virtualenv)2.在本地创建一个虚拟环境virtualenv空目录3.cmd进入步骤2创建的目录,执行命令 virrualenv test4.切换到创建的虚拟环境目录,查看脚本文件,其中activate.bat表示启动脚本,deactivate.bat表示退出脚本5.激活环境6.退出环境至此,虚拟环境vi
2020-06-07 18:08:36
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人