- 博客(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
3311
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
843
原创 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
1905
转载 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
1443
原创 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
268
原创 运行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
583
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
679
转载 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
472
转载 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
4659
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
108
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
697
原创 运行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
979
原创 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
1319
原创 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
623
转载 使用多个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
871
转载 在一个测试用例中需要多次调用同一个fixture
前言在一个测试用例中需要多次调用同一个fixture的时候,工厂化的 fixture 的模式对于一个 fixture 在单一的测试中需要被多次调用非常有用。之前写fixture是直接return一个数据,在测试用例中可以直接使用,现在我们需要返回一个生成数据的函数,这样就能在用例中多次调用了。Factories as fixtures“Factories as fixtures”模式可以帮助在一次测试中多次需要一个fixture的结果的情况下。fixture不是直接返回数据,而是返回一个生成数据的函数
2020-12-15 09:55:16
880
原创 python之Template的使用
Template字符串模板,用于替换字符串中的变量。模板字符串支持基于$的替换,并遵循以下规则:$$:被替换为$$变量:标识符仅限以下划线或者字符开头的字母数字字符串(包括下划线),字符后的第一个非标识符字符终止此占位符规${变量}:等同于$变量,当有效标识符位于占位符之后但是不属于占位符是,必须用此种方式,比如${age}age此类的方法:substitute(mapping={}, /, **kwds):执行模板替换并返回一个新字符串。映射是任何类似于字典的对象,其键与模板中的占位符
2020-12-14 17:02:00
9661
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
19402
5
原创 比较好的文章收藏
1. Python之列表生成式、生成器、可迭代对象与迭代器https://www.cnblogs.com/yyds/p/6281453.html
2020-11-27 14:10:27
107
原创 写入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
617
转载 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
1967
转载 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
1935
原创 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
3583
原创 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
215
原创 代码部署到另一个环境后,Keys.ENTER时报错,报错信息为“status 400 element not interaction”
代码部署到另一个环境后,Keys.ENTER时报错,报错信息为“status 400 element not interaction”由于在一个环境中代码可以运行,部署到另一个环境报错。这种情况首先考虑是环境问题引起,比如selenium的版本问题,查看报错信息发现是webdriver报出来的错误,后面尝试换了一个chromedriver.exe驱动后代码运行通过。原因是部署环境的驱动和浏览器的...
2020-03-13 16:56:13
334
原创 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
441
原创 好用的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
162
转载 python中__init__文件的作用
一、__init__文件的作用1、python中package的标识,不可删除(删除后HTMLTest跑自动化的时候识别不了python模块,导致用例不会执行)2、定义__all__用来模糊导入3、可以用来编写python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)二、__all__变量变量__all__一般定义...
2019-10-11 15:52:24
2220
原创 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
4558
原创 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
1267
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
612
原创 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
308
原创 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
1305
原创 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
3738
原创 解决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
2037
原创 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
5761
1
转载 python: 为什么pymysql重连后才能查到新添加的数据
重复读(REPEATABLE READ):InnoDB 的默认隔离级别。它可以防止任何被查询的行被其他事务更改,从而阻止不可重复的读取,而不是 幻读取。它使用中度严格的锁定策略,以便事务内的所有查询都会查看同一快照中的数据,即数据在事务开始时的数据。那么此时问题就找到了,跟当前的事务级别有关系的;当创建查询事务时,事务一直没有进行更新,每次查询到的数据都是之前查询结果的快照,下面会详细介绍每种...
2019-08-21 15:32:54
326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人