自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(428)

原创 locator 分层设计思想

locator 分层设计思想locator 分层元素定位分层测试用例分层locator 分层接着上一篇文章 – PageObject 设计模式登录页面元素定位,都是放在 PageObjects 目录下的 login_page.py 文件下的 LoginPage 类下元素定位分层这个登录页面要用到的元素定位还是比较少的,在真正的项目中,一个页面20~30个元素定位都是比较正常的。现在除了 xpath 表达式没有其他的,如果我还要增加其他的表达式,都堆在这个 class 里,会塞得很满,而这个时候

2020-10-11 21:07:56 59 3

原创 PageObject 设计模式

PageObject 设计模式PageObject 设计模式简要认知PageObject 设计模式原理PageObject 设计模式核心思想PageObject 设计模式的优点PageObject 设计模式实操测试用例编码driver 扩展简化页面元素定位设置等待断言处理逆向用例ddtPageObject 设计模式简要认知PageObject 设计模式原理将页面的元素定位和元素行为封装成一个page类。一个页面对应一个类类的属性:元素的定位类的行为:元素的操作PageObject 设计模式核

2020-10-07 02:49:09 103

原创 WeDriver 对页面元素的定位和操作

WeDriver 对页面元素的定位和操作WeDriver 对网页元素的定位web界面的元素WebElement 对象八种元素定位方法常见元素定位find_element_by_id()find_element_by_name()find_element_by_class_name()find_element_by_tag_name()find_element_by_link_text()Xpath定位绝对路径方式定位属性方式定位层级与属性方式定位模糊匹配属性内容方式定位逻辑运算符进行组元素属性定位css定位

2020-10-04 17:27:14 114

原创 Windows 下 xshell 和 xftp 安装与使用

Windows 下 xshell 和 xftp 的安装与使用xshell 和 xftp 的安装获取下载链接xshell 的安装xftp 的安装xshell 和 xftp 的使用xshell 的使用xftp 的使用xshell 和 xftp 的安装获取下载链接xshell 和 xftp 的官网链接进入官网后,点击 xshell 和 xftp 进行下载选择家庭和学校用户,获取免费下载链接填写姓名和邮件,点击下载会有两条下载链接发送至填写的邮箱,点击下载链接即可下载对应的安装包xshell

2020-10-01 18:54:51 153

原创 DOM

DOMDOMDOM 树节点节点父、子和同胞DOM对象元素对象(Element)属性对象DOM 事件JS 的 DOM 操作DOM 访问DOM 修改DOM 事件监听常用事件DOMDOM (Document Object Mode) 全称是文档对象模型,是W3C组织推荐的处理可扩展标志语言的标准编程接口是一套web标准:定义了访问HTML文档的一套属性、方法和事件。DOM的本质是 网页 与 脚本语言 沟通的桥梁。脚本语言通过DOM对象来访问html页面,从而改变文档的结构,样式和内容。当浏览器载入

2020-09-23 22:28:16 42

原创 selenium 中 webdriver 原理

selenium 中 webdriver 原理selenium 中 webdriver 通信流程查看 webdriver 源码selenium 中 webdriver 通信流程主要流程就是 selenium 通过里面的 webdriver 直接控制浏览器(通过不同浏览器的驱动)然后对目标进行UI层面的测试。其本质就是 http 的通信过程:通过代码服务启动,chromedriver 启动,IP + 端口进行监听python selenium webdriver 跟 chromedriver

2020-09-21 21:18:15 953

原创 Python中的函数(function)与方法(method)

Python中的函数(function)与方法(method)判断是函数(function)还是方法(method)inspect.ismethod() 与 inspect.isfunction()在编程语言中有两个很基础的概念,即方法(method)和函数(function)。除去入参、返回值、匿名函数之类的正确的形式内容之外,我们一般都会这样说:“函数就是定义在类外面的,而方法就是定义在类里面的,跟类绑定的”深究一下判断是函数(function)还是方法(method)在标准库inspect

2020-09-16 20:20:24 83

原创 Python 中的 __name__ 变量

Python 中的 __name__ 变量__name__的作用方式1 直接运行脚本方式2 从其他脚本里导入在很多 Python程序里,经常会看到这样的一段代码:if __name__ == '__main__': main()这个内置变量具体是什么含义?在写的 Python 模组里要怎样使用它?估计很多时候都是一知半解__name__的作用作为 Python 的内置变量,__name__变量(前后各有两个下划线)还是挺特殊的。它是每个 Python 模块必备的属性,但它的值取决于你

2020-09-14 21:39:14 140

原创 Python Package中的 __init__.py

Python Package中的 __init__.pyPackage 中 init 的历史Package 中 init 的作用区分模块绑定到当前的命名空间Package 中 init 的历史在一些 Python 相关的项目时,常常会看到 __init__.py文件,当你使用某些编辑器创建 Python Package 的时候,它也会自动给你生成一个 __init__.py 文件。这玩意到底是干什么用的?这个 py文件 里是空的看名字,像是用来做一些初始化操作的,实际情况呢,其实也差不多其

2020-09-13 16:01:08 83

原创 pip 命令

pip 命令查看 pip 命令参数以及可选项安装卸载查看更新python 这门语言有着庞大的第三方库,我们总会用 pip 命令来安装一些依赖库查看 pip 命令参数以及可选项Windows下可通过快捷键 win + R 输入 cmd 命令打开黑屏终端Linux下例如Ubuntu系统,可通过快捷键 Ctrl + Alt + T打开黑屏终端在终端输入 pip 可以查看所有的命令参数以及可选项安装这里以 flask 库举例,安装 flask 库,默认安装最新版pip install flask

2020-09-13 13:31:39 107

原创 接口自动化项目构建

接口自动化项目构建项目流程项目结构项目要求与相应操作文件命名测试用例函数命名接口参数化项目流程项目结构xxxx(项目名称)|-- api| -- xxxxxxx # 某产品(或某服务)| -- xxxx.py # 该产品某一接口|-- common # 相同基础通用方法| -- dataType.py # 字符格式转换,同一封装使用| -- emailSend.py # 测试执行后的邮件发送配置(收件人配置)| -- HTMLTe

2020-09-13 11:26:03 27

原创 WebUI自动化项目构建

WebUI自动化项目构建项目流程项目结构项目要求与相应操作文件命名测试用例函数命名页面class元素定位元素操作元素操作错误重试操作等待项目流程项目结构xxxx(项目名称)|-- common # 相同基础通用方法| -- baseView.py # 定义driver方法,将所有基础方法重定义(一是为了统计所有使用到的基础方法便于其他人学习;二是为了简化项目编码维护)| -- dataType.py # 字符格式转换,同一封装使用| -- emailSend.

2020-09-12 21:34:33 42

原创 Pycharm 安装插件

Pycharm 安装插件Pycharm 安装插件Pycharm 中一些值得安装的插件Rainbow BracketsIdeaVimMarkdown NavigatorTranslation如果说编辑器是程序员的武器,那么插件就是装备加成。插件可以让编写代码更加灵活Pycharm 安装插件点击 file – settings ,进入设置找到 apperance 中的 Plugins,在搜索框中搜索想要的插件,然后点击安装即可Pycharm 中一些值得安装的插件Rainbow Brack

2020-09-09 21:47:51 65

原创 Pycharm 更换皮肤和壁纸

Pycharm 更换皮肤和壁纸更换皮肤更换壁纸更换皮肤点击 file – settings ,进入设置找到 apperance 中的 Theme ,下拉即可选择对应的皮肤,一般选择黑色,看久了眼睛不会觉得疲累更换壁纸找到 apperance 中的 Background Image选中图片,更改透明度...

2020-09-09 21:27:55 114

原创 PyCharm 默认每个py文件添加信息

PyCharm 默认每个py文件添加信息操作步骤编辑内容在PyCharm编写代码的过程中,对于每次新建文件,都可以添加相应的信息,比如编码时间、代码编写者和其他一些相关信息操作步骤点击 File – Settings编辑内容拓展: shebang行在Python脚本的第一行,常常能看到 #!/usr/bin/env python3 或者 #!/usr/bin/python3 字样,其中 #! 符号在计算机行业中叫做 “Shebang”, 其作用是指定由哪个解释器来执行脚本。在这里即是指定py

2020-09-09 20:40:49 45

原创 jupyter

jupyterjupyter 简介jupyter 安装jupyter 的使用1、快捷键2、帮助文档2.1 使用help()函数2.2 使用 '?'3、魔法指令3.1 查看所有的魔法指令3.2 运行外部的文件3.3 查看运行计时3.4 查看当前会话中(即当前ipynb文件中)所有的存在的函数与变量3.5 执行系统的终端指令jupyter 简介终端是有限制的jupyter notebook是一个基于b/s的web交互式的ipython运行环境,可以支持多个终端的分布式并行运算;我们通过这个web的前端提

2020-09-07 20:49:47 66

原创 requests 库会话处理

requests 库会话处理会话处理会话处理http://www.jokeji.cn/这是一个笑话内容的网站,使用的是http协议我们知道http协议是一种无状态的协议会话处理 .pyimport requestslogin_url = 'http://www.jokeji.cn/user/c.asp'# 请求头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (

2020-09-06 00:11:06 48

原创 爬虫之 requests 库爬取公交信息

爬虫之 requests 库爬取公交信息爬取公交的信息1、根据第一级页面链接获取第二级链接2、进入第二级页面链接爬取公交的信息广州公交网站https://guangzhou.8684.cn/抓取广州市所有的公交信息1、根据第一级页面链接获取第二级链接右键检查元素最初的页面的url是点击字母或数字进入下级页面时url的变化所以通过正则匹配url,拼接url2、进入第二级页面链接同样查找规律用xpath插件查找所需的内容然后进入第三级链接获取最终的信息gongjiao

2020-09-06 00:01:01 56

原创 使用xpath解析爬取链家

使用xpath解析爬取链家爬取链家将数据存储到redis爬取链家from urllib import requestfrom time import sleepfrom lxml import etreeimport csvimport redisimport re# 1 数据抓取# 定义一个函数,用于将页码,城市等信息转化为一个Request对象def request_from(url,page,city): # 请求头 headers = { 'User-Agen

2020-09-05 16:31:23 74

原创 Windows下chromedriver安装与配置

Windows下chromedriver安装查看浏览器版本下载压缩包并解压使用代码驱动浏览器chromedriver:谷歌浏览器驱动查看浏览器版本谷歌浏览器 -->帮助–>关于 Chrome下载压缩包并解压通过浏览器版本号去该网站下一个驱动注意:chromedriver 的版本要和 chrome 浏览器相对应,不然很多功能不能用下载后解压该文件会得到记住这个 exe 文件所在的路径使用代码驱动浏览器# 从selenium中导入webdriverfrom selen

2020-09-05 15:57:07 64

原创 linux系统下安装JDK并配置环境变量

linux系统下安装JDK并配置环境变量安装JDK下载安装包新建java文件夹作为安装目录将压缩包移动到java文件夹下并解压配置环境变量安装JDK下载安装包官网链接这里选择tar.gz 格式的压缩包新建java文件夹作为安装目录在usr目录下建立java安装目录,如果权限不够,可以加上sudo权限cd /usr mkdir java将压缩包移动到java文件夹下并解压使用mv命令将压缩包移动到/usr/java文件夹下并解压,如果权限不够,可使用sudo权限mv jd

2020-08-31 21:38:21 35

原创 Selenium面试题

NO.1 Selenium是什么是一个开源的web自动化测试的框架,支持多种编程语言,支持跨浏览器平台进行测试NO.2 Selenium中有哪些验证点?Selenium主要有三种验证点检查页面标题检查某些文字检查某些元素(文本框,下拉菜单,表等)NO.3 你如何从Selenium连接到数据库?Selenium是一个Web UI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。NO.4 如何提高selenium脚本的执行速度?1.优

2020-08-31 00:10:25 70

原创 自定义函数判断内容是否全为字母

Python中isalpha() 没考虑中文自己定义一个函数,函数与isalpha()功能相同,要求考虑中文.自定义函数判断内容是否全为字母def myalpha(str1): if str1 == "": return False else: for x in str1: if x >= 'a' and x <= 'z' or x >= 'A' and x <= "Z":

2020-08-30 22:01:58 31

原创 自定义函数实现冒泡排序功能

自定义函数实现冒泡排序功能def maopao(str1): strList = str1.strip().split() numList = [] for x in strList: numList.append(int(x)) for i in range(len(numList)-1): for j in range(len(numList)-i-1): if numList[j]>numList[j+1

2020-08-30 21:59:36 495

原创 自定义函数判断回文序列

检查给定的字符串是不是回文序列首先把所有字母转化为小写,并移除非英文字母符号。最后对比字符串与反向字符串是否相等,相等则表示为回文序列。def palindrome(string): from re import sub s = sub('[\W_]', '', string.lower()) return s == s[::-1]print(palindrome('caooac') )# True...

2020-08-30 12:02:47 39

原创 自定义函数获取列表中出现频率最高的元素

def most_frequent(list): return max(set(list), key = list.count)list = [1,2,1,2,3,2,1,4,2]print(most_frequent(list) )# 2

2020-08-29 14:19:27 53

原创 计算执行特定代码所花费的时间

import timestart_time = time.time()a = 1b = 2c = a + bprint(c) end_time = time.time()total_time = end_time - start_timeprint("Time: ", total_time)

2020-08-29 14:07:20 27

原创 枚举列表的索引与值

For 循环来遍历某个列表,枚举列表的索引与值list = ["a", "b", "c", "d"]for index, element in enumerate(list): print("Value", element, "Index ", index )# ('Value', 'a', 'Index ', 0)# ('Value', 'b', 'Index ', 1)#('Value', 'c', 'Index ', 2)# ('Value', 'd', 'Index ', 3

2020-08-29 13:59:39 78

原创 自定义函数合并字典

# 法一:def merge_two_dicts(a, b): c = a.copy() c.update(b) return ca = { 'x': 1, 'y': 2}b = { 'y': 3, 'z': 4}print(merge_two_dicts(a, b))# {'y': 3, 'x': 1, 'z': 4}# 法二:def merge_dict(a, b): return {**a, **b}a = { 'x': 1, '.

2020-08-29 13:56:19 23

原创 自定义函数检查列表内元素是否重复

def list_is_repeate(lst): return len(lst) != len(set(lst))x = [1,2,3,4,5,5]list_is_repeate(x) # True

2020-08-29 13:12:26 29

原创 python链式函数调用

在一行代码内调用多个函数def add(a, b): return a + bdef subtract(a, b): return a - ba, b = 4, 5print((subtract if a > b else add)(a, b)) # 9

2020-08-29 13:04:44 28

原创 自定义函数通过函数取差

先会应用一个给定的函数,然后再返回应用函数后结果有差别的列表元素def difference_by(a, b, fn): b = set(map(fn, b)) return [item for item in a if fn(item) not in b]from math import floorprint(difference_by([2.1, 1.2], [2.3, 3.4],floor) )# [1.2]print(difference_by([{ 'x': 2

2020-08-29 12:54:44 18

原创 自定义函数对比列表中的独有元素

对比两个列表,列出某个列表中独有的元素def differenceA(a, b): set_a = set(a) set_b = set(b) difference_Ab = set_a.difference(set_b) # print(difference_Ab) return difference_Abprint(differenceA([1,2,3], [1,2,4]) )# 输出A列表中的独有元素 {3}def differenc

2020-08-29 11:18:27 27

原创 自定义函数展开列表

通过递归的方式将列表的嵌套展开为单个列表def spread(arg): ret = [] for i in arg: if isinstance(i, list): ret.extend(i) else: ret.append(i) return retdef unfold_list(lst): result = [] result.extend( spread(l

2020-08-29 11:06:21 18

原创 自定义函数统计元音字母

通过正则表达式统计字符串中的元音 (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) 的个数import redef count_vowels(str): return len(re.findall(r'[aeiou]', str, re.IGNORECASE))print(count_vowels('goodnight') )# 3print(count_vowels('goodbye') )# 3...

2020-08-29 10:59:46 16

原创 自定义函数去掉布尔型元素

使用 filter() 函数,将布尔型的值去掉def wipe_bool(lst): return list(filter(bool, lst))print(wipe_bool([0, 1, False, 2, '', 3, 'a', 'B', 4]))# [1, 2, 3, 'a', 'B', 4]

2020-08-28 19:29:05 19

原创 自动化测试面试题(一)

自动化测试面试题(一)NO.1 什么是自动化测试NO.2 什么是分层测试?NO.3 自动化测试的适用和不适用场景NO.4 你觉得自动化测试最大的缺陷是什么?NO.4 项目使用的自动化测试框架NO.5 对库的使用NO.6 如何设计高质量自动化脚本NO.7 如何在脚本中组织测试用例,按什么模式设计NO.8 page object设置模式中,是否需要在page里定位的方法中加上断言NO.9 page object设计模式中,如何实现页面的跳转?NO.10 你的自动化用例的执行策略是什么?NO.11 如何去提升用例

2020-08-27 21:41:20 107

原创 自定义函数指定大小切割列表

给定具体的大小,定义一个函数以按照这个大小切割列表from math import ceildef cut_list(lst, size): return list( map(lambda x: lst[x * size:x * size + size], list(range(0, ceil(len(lst) / size)))))print(cut_list([1,2,3,4,5],2))# [[1,2],[3,4],5]...

2020-08-27 19:42:39 33

原创 自定义函数检查字符串占用的字节数

检查字符串占用的字节数def byte_size(string): return(len(string.encode('utf-8')))print(byte_size('你好') )# 6print(byte_size('Hello') )# 5

2020-08-27 18:25:02 28

原创 自定义函数检查两个字符串的组成元素是否一致

Counter()函数用于统计各元素的数量from collections import Counterprint(Counter('abcde'))# Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1})检查两个字符串的组成元素是不是一样的from collections import Counterdef srt_is_equally(first, second): return Counter(first) == Counter(

2020-08-27 18:10:49 26

空空如也

空空如也

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