自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

honeyJ

Talk is cheap,Show me the code.

  • 博客(264)
  • 收藏
  • 关注

原创 redis

redis:Redis 是一个Key-Value 数据库,主要用于存储缓存redis支持的数据类型:String字符串:设置key值:: set key valuestring类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。Hash(哈希)设置值: hmset name key1 value1 key2 value2Redis hash 是一个键值(key=&g

2021-04-09 22:48:39 160

原创 filter- 条件合并

发现一个很好用的用法。可以根据前端传来的数据判断,数据筛选的条件。可以先新建一个列表:filter = []根据条件,给这个列表加条件。比如:if status: filter.append( User.id == 1 )这样可以根据一些字段生成查询条件如下使用方法,就可以了:db.session.query(User).filter( *(filter) ).all()这样不需要根据条件去写一些重复的查询代码,且条理清晰...

2021-01-29 15:25:57 264

原创 常用操作-增删查改

官方文档:http://www.pythondoc.com/flask-sqlalchemy/quickstart.html常用的SQLAlchemy查询过滤器常用的SQLAlchemy查询执行器eg:表定义:class Users(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) name= Column(String(50), default='姓名')增:# 创建新Us

2021-01-29 15:01:11 206

原创 ORM初识

ORM面向对象编程我们都知道,面向对象是把所有实体看成对象(object),而关系型数据库则是采用实体之间的关系(relation)连接数据。而ORM的意义就是通过实例对象的语法,完成关系型数据库操作的技术。ORM 把数据库映射成对象:数据库对象数据库的表(table)类(class)记录(record,行数据)对象(object)字段(field)对象的属性(attribute)优点数据模型都在一个地方定义,更容易更新和维护,也利于重用代码ORM

2021-01-15 20:02:53 84

原创 Python 刷题记录总结

Python endswith()用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置str.endswith(suffix[, start[, end]])参数suffi:该参数可以是一个字符串或者是一个元素start:字符串中的开始位置end :字符中结束位置返回值如果字符串含有指定的后缀返回True,否则返回Falseeg:str = "hello world!!!" suffi

2020-10-18 22:20:42 178

原创 js 入门 stopPropagation() 方法

首先了解一下Event 对象的概念。Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行事件句柄 (Event Handlers)比如当用户点击某个 HTML 元素时启动一段 JavaScript<Menu> <Menu.Item> <a onClick={e => { e.stopPropagation(); thi

2020-10-16 19:45:28 3687

原创 js踩坑记录-数组

数组比较eg1:以为打印出的是true,但是是false,原因是数组是引用数据类型,比较的时候比较的是地址,所以是不相等的。在C++中,数组也是不能通过这种方式比较的。但是python是可以的。那要如何进行数组比较呢?如果是比较全数组,可以转化为字符串进行比较:JSON.stringify(array1) === JSON.stringify(array2)或者遍历数组比较。遍历数组方法一:for 下标访问for (let i = 0; i < arr.length; ++i

2020-10-14 22:59:34 158 2

原创 总结:python paramiko winrm

paramiko之前使用过paramiko连接过linux机器,做过文件传输。做一个总结首先两台或多台主机需要实现免密登录:假设host1 ip:192.168.0.1, host2 ip:192.168.0.2在host1上运行, ssh-keygen -t rsa,一路回车,这样会在你的用户root的目录下生成.ssh目录,里面包含了你root用户的公钥文件 id_rsa.pub和私钥文件id_rsa在host1上运行,ssh-copy-id root@192.168.0.2,当需要确

2020-10-12 21:01:23 242

原创 开启微信小程序debug

小程序融合了Native app和web-app的特性,本质上是一种 Web 应用,可以通过PC浏览器进行页面元素的 Inspect。为了可以在chrome://inspect/#devices进行元素定位,首先要开启debug功能。可参考以下链接 微信debug对于安卓原生的UI组件,我们可以直接用UIAutomator查看元素属性,如下图所示:打开元素树点击要定位的元素,右侧一栏会显示其元素属性.每个原生组件有很多属性,如resource-id、text、class、content-d

2020-07-27 20:21:03 3931

原创 appium启动app

appium启动apk刚开始接触,记录一下,appium启动app,主要是通过apiif __name__ == '__main__': desired_caps = dict() desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '8' desired_caps['deviceName'] = '[HUAWEI] EVA-AL00' desired_caps[

2020-07-24 20:02:32 306

原创 求助:appium webview点击元素失效

遇到一种情况:appium webview点击元素失效试过,tap,click,点击了元素仍没有反应。奇怪的是,启动apk时,设置的driver版本设置了其他的,仍然可以切换进webview里。desired_caps['chromedriverExecutable'] = 'chromedriver-66.exe'用js脚步点击可以成功。用tap(ele)报错,显示坐标在范围之外。所以怀疑是点击的位置发生了偏移,但不知道是为什么?会不会是因为driver版本的问题?...

2020-07-24 11:15:55 925

原创 appium API 之 TouchAction,TouchActions,MultiAction

最近在做一些安卓自动化的项目,新手踩了一些坑,总结一下。现在用过的常用库包括TouchAction、TouchActions、MultiAction。总结一下api和使用。TouchActionTouchAction是appium的辅助类,主要是一些手势操作。from appium.webdriver.common.touch_action import TouchActiontap:对元素执行点击操作跳进函数看一下源码def tap(self, element=None, x=None,

2020-07-10 17:56:53 491

原创 python-操作windows窗口

在自动化测试时,遇到一种情况,校验是否打开了某程序,但不涉及UI自动化,所以就想到了利用windows窗口去校验。关闭窗口句柄比如,关闭资源管理器的窗口import win32gui,win32condef close_windows_handle(title): #"CabinetWClass"是explorer的类名 handle = win32gui.Fin...

2020-03-23 19:46:03 1664

原创 python-获取、查询、关闭进程

"""获取所有进程"""def get_process(): #获取当前所有的进程 pids = psutil.pids() for pid in pids: p = psutil.Process(pid) process_name = p.name() print("Process name is: %s, pid i...

2020-03-23 19:33:07 2284 1

原创 python-读取、修改注册表信息

查询遍历注册表注册表分两部分:键和值键是一个树结构,一个键下面可以有很多子键一个注册表有5个根键。官网:链接方法解释RegOpenKey打开注册表项RegQueryInfoKey检索有关指定注册表项的信息RegQueryValue检索有关指定注册表项的信息有需要请去官网找,下面程序是自己工作时写的遍历与筛选,可供参考。import win32...

2020-03-23 19:23:58 2488

原创 python-获取本地磁盘信息

Win32_LogicalDisk类官网地址:Win32_LogicalDisk查看本地磁盘信息import wmidef get_disk_info(): info_ = [] myWmi = wmi.WMI() for disk in myWmi.Win32_LogicalDisk(): info = {"diskName":dis...

2020-03-23 19:10:03 846

原创 selenium-元素定位表达式正确,但却定位不到元素?

在定位元素时,有时候会出现定位表达式正确,却找不到元素的情况,分析一下我遇到的几种原因。1.定位表达式不唯一定位元素时,我们会采取某种定位方式,有时会出现定位失败的情况,这是因为可能定位表达式不唯一解决方法:如上图所示,(1)打开开发者工具,按Ctrl+F,复制定位表达式,(2)按右边的箭头查看相同字符串的位置,若也是另一元素的id,则用id定位会失败,更换定位方式2. 内嵌页面If...

2020-03-04 19:02:44 1482

原创 selenium测试video&audio&table

在操作视频或者音频的时候,获取属性可能会遇到很多问题,可以使用js的方法辅助我们进行校验。视频校验视频时长如果视频/音频在html页面可以找到相应的标签,可以通过dom对于这些标签的操作api来获取相应信息。获取播放总时长:document.querySelector(‘video’).duration获取播放进度时长:document.querySelector(‘video’).cu...

2020-02-29 13:17:22 1855

原创 seleniun校验canvas画笔操作

问题描述:浏览器有一个画板的功能,需要去校验画笔,如何在画板上进行操作,并做校验呢?解决:鼠标移动操作利用selenium的ActionChains类,模拟鼠标移动。click_and_hold:鼠标点击某元素,不释放move_by_offset:鼠标移动相对于之前位置的(x,y)release():鼠标释放perform():执行ActionChains的行为链校验如何校验画笔操作成功了呢...

2020-02-28 17:34:19 194

原创 selenium拖拽元素失败

总结一种情况有时候模拟拖拽元素时,失败的原因不一定是我们的操作有问题,有可能和web页面的实现有关系。比如:我们一般实现拖拽的时候会使用:ActionChains(webdriver).drag_and_drop_by_offset(button, x_location, y_location).perform()button就是我们鼠标落下需要移动的元素,x,y就是坐标了。举例:在自...

2020-02-28 17:10:54 1678 3

原创 js字符串截取

之前在获取元素属性时,踩了个坑,记录一下。用selenium做web自动化时,获取元素属性时,有时候会有单位,比如元素的宽高,得到的属性会是XXpx这样,但我只想要数字。就用了这样的函数将数字取了出来。def get_num(original_data): num = re.sub("\D", "", original_data) return str(num)没有考虑到的...

2019-09-30 11:08:57 1243

原创 HTTP协议总结

1、简介HTTP也叫超文本传输协议,是应用层协议,支持C/S模式,浏览器作为HTTP的客户端通过url向HTTP服务端,也就是WEB服务器发送请求。http协议是无连接,无状态的。无连接指的是当服务器处理完客户端的请求,并收到客户的应答后,断开链接;无状态指的是对于事务处理没有记忆能力。2、HTTP请求http请求由四部分组成:请求行,消息报头,空行,请求正文请求行由三部分组成方法...

2019-07-22 22:36:33 744 1

原创 python-练习

Python 实现秒表功能import timeprint('按下回车开始计时,按下 Ctrl + C 停止计时')while True: try: input() starttime = time.time() print('开始') while True: print('计时: ', rou...

2019-04-09 20:40:40 278

原创 按相反的顺序输出列表的值

按相反的顺序输出列表的值法一:a = ['one', 'two', 'three']for i in a[::-1]: print(i)法二:a = ['one', 'two', 'three']print(a[-1::-1])法三:使用reverse()list = ['a', 'b', 'c', 'd']list.reverse()print( list)...

2019-04-08 21:37:21 2630

原创 pyhton-练习

题一:有如下值集合 [11,22,33,44,55,66,77,88,99,90]将所有大于 66 的值保存至字典的第一个 key 中将小于 66 的值保存至第二个 key 的值中。即: {‘k1’: 大于 66 的所有值,‘k2’: 小于 66 的所有值}代码如下:法一,自定义函数:def f1(arr): result = [] for item in arr...

2019-04-03 21:16:18 978

原创 python-二次方程

导入 cmath模块,计算复杂数学运算eg:我们计算二次方程式 ax**2 + bx + c = 0代码如下:import cmath a = float(input('输入 a: '))b = float(input('输入 b: '))c = float(input('输入 c: ')) d = (b**2) - (4*a*c) # 两种求解方式sol1 = (-b-...

2019-04-02 21:23:51 4550 2

原创 Random-获取随机数

之前也用过Random的函数,今天了解一些python中random的函数。import randomprint(random.random)print(random.random())这用于生成一个0到1的随机符点数: 0 <= n < 1.0看结果:random.uniformprint(random.uniform(10, 20))print(random.u...

2019-04-01 21:38:35 1066

原创 python-hashlib加密

之前遇到过MD5加密的问题,今天整理一下hashlib模块,了解常见的加密方式。import hashlibstring = "123456"md5加密md5 = hashlib.md5()md5.update(string.encode('utf-8')) res = md5.hexdigest()print("md5加密结果:",res)sha1加密sha1 ...

2019-03-29 21:57:25 142

原创 selenium-模拟鼠标拖拽

1、从一个元素拖拽到另一个元素:from selenium import webdriverfrom selenium.webdriver import ActionChainsimport timebrowser = webdriver.Chrome()try: browser.get("http://www.runoob.com/try/try.php?filename=j...

2019-03-27 20:18:11 8522 1

原创 python-itertools

昨天见到了一个python的内建模块-itertools。今天总结一下:itertools提供了非常有用的用于操作迭代对象的函数,整理如下首先,我们看看itertools提供的几个“无限”迭代器count()eg:import itertoolsarr = itertools.count(1)for n in arr: print(n)这里会从1开始打印出序列,程序不...

2019-03-26 21:18:07 111

原创 python-计算笛卡尔积

计算多个集合的笛卡尔积,很多语言都没有提供直接计算笛卡尔积的方法,需要自己写很长的代码计算笛卡尔积今天用python 实现,如下:Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数代码:import itertoolsclass cartesian(object): def __init__(self): self._data_lis...

2019-03-25 20:34:11 1459 1

原创 Python-SMTP发送邮件

之前学习过SMTP(Simple Mail Transfer Protocol,知道是简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。学习一下python对其的操作方法:Python创建 SMTP 对象语法如下:import smtplibsmtpOb...

2019-03-22 21:21:03 146

原创 selenium-处理弹窗

将以下代码copy至txt文本里,后缀改成html,然后用浏览器打开<html> <head> <title>Alert</title> </head> <body> <input id = "alert" value = "alert" type = "button" on...

2019-03-21 21:48:56 3339 1

原创 python之sys模块

python之sys模块详解之前用过sys模块的一种用法,今天总结一下。sys.argv功能:在外部向程序内部传递参数eg:#!/usr/bin/env pythonimport sysprint(sys.argv[0])print(sys.argv[1])运行:python sys.py argv1结果:sys.exit(n)功能:执行到主程序末尾,解释器自动退出,...

2019-03-18 19:53:56 333

原创 Python yield 使用浅析

之前了解了生成器的概念,带有 yield 的函数在 Python 中被称之为 generator(生成器),那么应该什么时候使用呢?举个例子:简单输出斐波那契數列前 N 个数def fab(max): n, a, b = 0, 0, 1 while n &lt; max: print(b) a, b = b, a + b n = n + 1...

2019-03-15 23:01:26 103

原创 python-当字符串为空则抛出异常

今天有一个需求,判断字符串是否为空,为空则抛出异常代码如下:class FError(Exception): passdef ss(str): if str == &quot;&quot;: return else: raise FError如果为空:class FError(Exception): passdef ss(str): ...

2019-03-14 19:46:43 3936

原创 python-迭代器与生成器

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器eg:list = [1,2,3,4]it = iter(list)print(next(it))如果继续print:print(next(it))迭代器对象可以使用常...

2019-03-12 19:27:25 179

原创 python-求三角形的面积

计算三角形的面积法一:#计算三角形的面积a = float(input('输入三角形第一边长:'))b = float(input('输入三角形第二边长: '))c = float(input('输入三角形第三边长:'))while a+b&lt;c or a+c&lt;b or b+c&lt;a: print('输入的边不构成三角形,请重新输入:') a = fl...

2019-03-11 19:41:40 40369 6

原创 python-requests的简单用法

做一个总结~以便以后参考本文参考:添加链接描述import requestsGET请求eg:r = requests.get('http://httpbin.org/get')print(r.url)传参eg:load = {'key1':'value1','key2':'value2','key3':'None'}r = requests.get('http://http...

2019-03-06 20:29:18 384

原创 python-将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步代码示例如下解法一 while 1: n = int(i...

2019-03-05 19:28:57 12351 4

空空如也

空空如也

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

TA关注的人

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