自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 python调用webservice接口

1、选用suds包安装pip install suds2、发送webservice的代码url = 'xxx?WSDL' #此处为你的webservice的地址client = Client(url)print(client) #此方法可以打印出webservice提供哪些类型及方法result=client.service.acceptMessage(option) # acceptmessage 是你的方法,option为参数print(result)还可以通

2021-09-16 15:56:43 3138 1

原创 itertools.product()使用

1、为什么使用做自动化的时候,有这么一个场景,需要将不定量和不定长的数组中的数据进行一个全排列(笛卡尔积)。找了一下资料,发现了itertools.product()方法2、使用介绍itertools.product:类似于求多个可迭代对象的笛卡尔积。使用的形式是:itertools.product(*iterables, repeat=1),product(X, repeat=2)等价于product(X, X)。1)举例 a = [1, 2] b = [3, 4]

2021-09-16 15:43:05 778

原创 jenkins运行python代码报UnicodeEncodeError: ‘charmap‘ codec can‘t encode characters

某一天jenkins上运行python代码突然报很多UnicodeEncodeError,具体的错误如下File "D:\Python37\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0]UnicodeEncodeError: 'charmap' codec can't encode characters in positio

2021-09-16 15:25:52 1748

转载 jenkins运行python代码报‘charmap‘ codec can‘t encode characters

在pycharm中运行脚本没有问题,但是跑到jenkins上运行报如下的错误猜想和摸索:难道cmd 编码有问题?不能输出中文?为此我找了一大批参考资料1)计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor,添加Autorun = @chcp 65001>nul2)cmd -> 属性 -> 字体改为 kaiticmd 能美美地显示中文了,python auto_test.py, 很OK。 但是Jenkins

2021-08-31 11:01:16 1345

原创 django报错must be real number, not safeText

运行环境win10+python3.7.4+django2.2换了xadmin2后台管理后,增加数据的时候报must be real number, not safeText经测试发现是因为下面代码中的primary_key=True引起的,去掉primary_key=True后就不会报错。admin后台管理这样写是没有问题的。好像xadmin中primary_key=True只能用于int型的,暂时无解。 user_name = models.CharField(max_length=60

2021-07-06 12:30:16 229

原创 运行django报‘gbk‘ codec can‘t decode

自己的环境是win10 + python 3.7.4 + django 2.2启动django报错:File "C:\Python37\lib\site-packages\django\views\debug.py", line 332, in get_traceback_html t = DEBUG_ENGINE.from_string(fh.read())UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9

2021-07-06 12:25:48 497 1

原创 binascii.Error: Incorrect padding

运行django项目突然报如下错误:File “python3.6/base64.py”, line 87, in b64decodereturn binascii.a2b_base64(s)binascii.Error: Incorrect padding查资料发现是因为django改变过版本,自己做测试把django从3变到了2.2解决方法:直接删除掉django_session表中的数据...

2021-07-06 12:22:31 573

转载 Django3.0.3使用Xadmin

1、安装xadminpip install https://codeload.github.com/sshwsfc/xadmin/zip/django22、setting.py中增加配置# 在注册APP的时候 crispy_forms 要放在 xadmin下面否则会报错INSTALLED_APPS = [ ... 'xadmin', 'crispy_forms', 'reversion', ...]3、xadmin有建立自己的数据库模型类,需要进行数

2021-07-06 10:00:50 405

原创 postman发送https请求报错

postman发送https请求报错报错截图如下修改postman设置

2021-05-24 11:08:11 820

转载 python结合mitmproxy做拦截代理

一、mitmproxy介绍mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。mitmproxy可以拦截http和https请求,如果需要拦截https请求需要安装证书二、mitmproxy安装(windows下)1. 运行下面命令进行安装pip install m

2021-03-08 10:58:49 4215 2

原创 pyhon接口测试requests

python中并没有json类型这一说法,通过json.dumps()转换的字典对象,最后得到的是一个字符串对象requests.post()在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型;import requestsimport jsonurl = "请求的url"data = {'username': "张三", 'age'

2021-03-04 11:52:35 76 1

原创 selenium操作windows文件上传窗口

selenium是无法操作windows的窗口的,需要借助win32gui、win32con来进行window窗口的操作 def win32_upload_file(file_path): dialog = win32gui.FindWindow("#32770", "打开") com_box_ex32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) com_box = win32gui.Fi

2021-01-22 14:57:49 638

原创 运行UI自动化项目时,某一天浏览器后台运行,程序运行到visibility_of_element_located时报错。

运行UI自动化项目时,某一天浏览器后台运行,程序报错,报错信息如下:self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0E23FDB0>response = {'sessionId': '948dc9be0bc706782ff514b323417379', 'status': 10, 'value': {'message': 'stale element reference: element...v

2021-01-04 13:52:25 818

原创 python连接mysql报错(1045, “Access denied for user ‘xx‘@‘xx‘ (using password:No)“)

做自动化需要加一个mysql数据库的连接,配置好数据库的连接信息后,运行python程序报如下错误(1045, "Access denied for user 'xx'@'xx' (using password:No)")但是用同样的配置信息,用MySQL Workbench客户端是可以成功连接的。原来配置的数据库连接也可以成功连接。解决方法:重新安装pymysql模块先运行pip uninstall pymysql进行卸载>pip uninstall pymysqlFound exis

2020-12-24 15:48:07 1197

原创 fixture之request

request是pytest的内置fixture。请求对象提供了访问请求测试上下文的权限,并且在fixture被间接参数化的情况下具有可选的“param”属性。1. request.param获取测试上下文的信息1)利用fixture的params传参import pytesttest_data = [{"user": "小明", "pwd": "123456"}]#直接使用params接收参数@pytest.fixture(params=test_data)def login(requ

2020-12-18 15:05:32 566

转载 使用多个fixture的返回值作为测试用例的入参

有时自动化场景需要使用多个fixture的返回值作为测试用例的入参。解决方法有两个,一个是使用fixture的params参数解决,一个是使用pytest-lazy-fixture插件方法一:使用fixture的params参数解决示例import pytest@pytest.fixture()def get_env(): return 1@pytest.fixture()def get_env2(): return 2# 写一个新的fixture,将get_en

2020-12-16 15:47:34 786

转载 在一个测试用例中需要多次调用同一个fixture

前言在一个测试用例中需要多次调用同一个fixture的时候,工厂化的 fixture 的模式对于一个 fixture 在单一的测试中需要被多次调用非常有用。之前写fixture是直接return一个数据,在测试用例中可以直接使用,现在我们需要返回一个生成数据的函数,这样就能在用例中多次调用了。Factories as fixtures“Factories as fixtures”模式可以帮助在一次测试中多次需要一个fixture的结果的情况下。fixture不是直接返回数据,而是返回一个生成数据的函数

2020-12-15 09:55:16 768

原创 python之Template的使用

Template字符串模板,用于替换字符串中的变量。模板字符串支持基于$的替换,并遵循以下规则:$$:被替换为$$变量:标识符仅限以下划线或者字符开头的字母数字字符串(包括下划线),字符后的第一个非标识符字符终止此占位符规${变量}:等同于$变量,当有效标识符位于占位符之后但是不属于占位符是,必须用此种方式,比如${age}age此类的方法:substitute(mapping={}, /, **kwds):执行模板替换并返回一个新字符串。映射是任何类似于字典的对象,其键与模板中的占位符

2020-12-14 17:02:00 9423 1

原创 selenium使用execute_script方法执行JavaScript操作

execute_script(script, *args)有些在页面上无法定位的元素,需要执行js操作的时候,就需要用此方法,比如滚动条滚动操作实例:from selenium import webdriverclass TestExample: def test_example1(self): driver = webdriver.Chrome() driver.maximize_window() driver.get("https://ww

2020-12-14 15:09:30 18973 4

原创 比较好的文章收藏

1. Python之列表生成式、生成器、可迭代对象与迭代器https://www.cnblogs.com/yyds/p/6281453.html

2020-11-27 14:10:27 60

原创 写入yaml文件

import osimport yamlstudent = {"name": "张三", "age": 20, "course": {"语文": 80, "数学": 90, "英语": 85}}if __name__ == '__main__': root_path = os.path.abspath(__file__) file_dir = os.path.dirname(root_path) file_path = file_dir + "\\student.yaml"

2020-11-27 10:27:39 576

转载 python中nb_log的应用

一、python日志模块python的日志模块如何封装一值都是一个头疼的问题,封装的不好总是会出现重复打印等头疼问题。现在终于找到一个最好用的日志模块nb_log,此日志模块由这位大佬开发的https://www.cnblogs.com/ydf0509/二、nb_log安装直接 pip install nb_log 进行安装三、功能介绍1. 自动转换print效果再也不怕有人在项目中随意print,导致很难找到是从哪里冒出来的print。只要import nb_log,项目所有地方的pri

2020-11-26 13:18:50 1845

转载 Selenium clear()方法无法清掉数据

问题描述:clear()方法执行过后, 数据还是在.根本原因:存在镜像节点. 操作clear()清掉数据后, 镜像节点的数据还在, 就会再补充回去.解决方法:1、通过全选的方式ele = browser.getWebDriver().findElement(By.id("id"));ele.sendKeys(Keys.CONTROL, "a");ele.sendKeys(Keys...

2020-04-17 11:33:51 1830

原创 localStorage清除和增加参数

1、做UI自动化的时候,有时候由于浏览器中存在Local Storage缓存,导致一些权限的操作会有问题这个时候需要清除掉local storageselenium可以使用js进行清除,代码如下 js = 'window.localStorage.clear();' driver.execute_script(js)2、什么是localStorage?在HTML5中,新加入了一个l...

2020-03-20 16:46:44 3465

原创 allure2配合pytest生成高大上报告

1、使用的环境window环境python 3.7pytest 4.0.2allure 2.13.0java 1.8pytest-allure-adaptor 1.7.102、Command Tool 安装1). allure安装allure下载地址: http://allure.qatools.ru/下载成功后将其解压到一个目录,自己习惯和python放一...

2020-03-18 16:25:04 187

原创 代码部署到另一个环境后,Keys.ENTER时报错,报错信息为“status 400 element not interaction”

代码部署到另一个环境后,Keys.ENTER时报错,报错信息为“status 400 element not interaction”由于在一个环境中代码可以运行,部署到另一个环境报错。这种情况首先考虑是环境问题引起,比如selenium的版本问题,查看报错信息发现是webdriver报出来的错误,后面尝试换了一个chromedriver.exe驱动后代码运行通过。原因是部署环境的驱动和浏览器的...

2020-03-13 16:56:13 288

原创 python中requirements.txt文件使用

1、requirements.txt文件作用1)批量导出当前开发环境的包信息2)批量安装依赖环境3)一般用pip安装工具安装单个包,多个包的安装可以手写requirements文件,进行多包安装2、用法生成requirements.txt文件pip freeze >requirements.txt批量安装程序依赖包pip install -r requirement...

2019-10-12 16:47:29 379

原创 好用的HTMLTestRunner收藏

HTMLTestRunner.py文件代码,适用于python3#coding=utf-8"""A TestRunner for use with the Python unit testing framework. Itgenerates a HTML report to show the result at a glance.The simplest way to use this...

2019-10-12 16:12:01 125

转载 python中__init__文件的作用

一、__init__文件的作用1、python中package的标识,不可删除(删除后HTMLTest跑自动化的时候识别不了python模块,导致用例不会执行)2、定义__all__用来模糊导入3、可以用来编写python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)二、__all__变量变量__all__一般定义...

2019-10-11 15:52:24 2168

原创 git 常用命令

1、回滚commit的内容git reset --soft HEAD~1

2019-09-05 14:30:49 59

原创 python+selenium获取元素的源码

在做UI自动化的时候,调试代码的时候需要获取到WebElement的HTML源码。可以通过innerHTML属性来获取ele = self.find_element_by_id("id")ele.get_attribute("innerHTML")1.innerHTML属性设置或返回表格行的开始和结束标签之间的 HTML,包括标签。2.outerHTML设置或获取对象及其内容的HTML形...

2019-09-05 10:02:02 4334

原创 selenium报错Element is not clickable at point的几种情况

总结下selenium触发点击事件报Element is not clickable at point的几种情况:1、元素未加载出来就进行了点击解决方法:在点击之前使用显示等待WebDriverWait(driver, timeout=).until(EC.visibility_of_element_located(元素的定位方式,元素定位表达式))2、需要点击的元素在frame/ifr...

2019-09-04 15:11:36 1158 1

转载 python+selenium基础之XPATH轴定位

转载:https://www.cnblogs.com/hanmk/p/9015502.html1.xpath轴是什么w3cschool上的定义如下:语法2.具体应用(1)descendant表示取当前节点的所有后代元素定位百度首页的“百度一下”按钮可以看到, 标签的父元素是标签,而标签的父元素是标签,所以可以通过先定位标签,然后利用descendant定位标签 #xpath路...

2019-08-28 16:16:04 553

原创 python+selenium元素定位

一、selenium八大元素定位1.1、通过idfrom selenium import webdriverdriver = webdriver.Chrome()driver.get("https://www.baidu.com/")# 通过元素的id进行定位driver.find_element_by_id("kw")1.2、通过name driver.find_elemen...

2019-08-28 15:41:13 261

原创 Jmeter安装 plugins-manager插件

一、安装plugins-manager插件1.1、下载插件plugins-manager插件下载地址:插件下载地址1.2、将下载的plugins-manager.jar放到jemter的安装目录,lib\ext1.3、重启jmeter重启jmeter,在选项下出现了plugins-manager项正面插件安装成功二、 plugins-manager插件使用2.1、点击选中下的Pl...

2019-08-27 10:13:49 1250

原创 selenium 滚动元素至页面可见

在做自动化时,有时由于web页面过长,需要模拟将页面往下滚动,然后使元素在web页面上可见滚动页面的方法:window.scrollBy()window.scrollBy(0,500)   向下滚动500个像素window.scrollBy(0,-500)   向上滚动500个像素window.scrollBy(500,0)   向右滚动500个像素window.scrollB...

2019-08-21 15:58:05 3660

原创 解决python selenium Action模拟拖拽无效

采用物理模式鼠标操作的解决方法1. 首先通过 pip install pypiwin32导入包2. 测试代码import win32api, win32con # 移动到某点坐标 win32api.SetCursorPos((782, 355)) time.sleep(0.5) win32api.mouse_event(win32con.M...

2019-08-21 15:33:17 1924

原创 python selenium在浏览器打开一个新窗口

driver = webdriver.Chrome()driver.get("要打开的地址")有时候使用get的方式打开不会打开新的页签,如果想在新页签打开,可以使用调用js执行js = ‘window.open(“https://baidu.com”)’driver.excute_scripts(js)...

2019-08-21 15:33:10 5657 1

转载 python: 为什么pymysql重连后才能查到新添加的数据

重复读(REPEATABLE READ):InnoDB 的默认隔离级别。它可以防止任何被查询的行被其他事务更改,从而阻止不可重复的读取,而不是 幻读取。它使用中度严格的锁定策略,以便事务内的所有查询都会查看同一快照中的数据,即数据在事务开始时的数据。那么此时问题就找到了,跟当前的事务级别有关系的;当创建查询事务时,事务一直没有进行更新,每次查询到的数据都是之前查询结果的快照,下面会详细介绍每种...

2019-08-21 15:32:54 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除