自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jenkins执行python+selenium取消无头模式

在win10本地安装的jenkins上构建web自动化任务,最后运行结果正常,但是运行的过程没有显示出来,想直观的看到运行的过程步骤如下:1.在本地安装一个tomcat,下载jenkins.war放在tomcat的webapps下2.想要启动jenkins必须先启动tomcat。在tomcat-bin下双击startup.bat启动tomcat成功启动后 访问http://localhost:8080/jenkins/3.在jenkins上面重新构建web脚本。执行成功,执行..

2021-11-01 08:39:52 544

原创 Jenkins执行python代码

在ide运行正常,在jenkins运行提示 模块不存在,找了一圈,原来是jenkin运行python的环境没设置解决方式:在Manage Jenkins -- System Configuration -- Configure System中设置全局变量,将python3运行环境加进来重新执行,成功...

2021-11-01 08:30:32 584 1

原创 Python基础-48-文本处理(逗号分隔值CSV)

前言python自带模块csv可以将数据以csv格式输出到文件,也可以将csv数据读回列表、元组数据写入和读取【代码部分】# coding:utf-8import csv# data也可以为列表data = ( ["1", "suner001", "b123456"], ["2", "suner002", "b123456"], ["3", ...

2019-09-12 14:27:22 2135

原创 Python+Selenium-20-图片验证码处理

前言有些注册页面会含有验证码,本篇描述在selenium中对验证码的处理实例需求打开万维易源注册页面:https://www.showapi.com/auth/reg (这个是第三方api平台易源接口,后面验证码识别用的就是他的)在注册页面中包含验证码的操作需求分析1)打开控制台,点击上方截图中的验证码图片,在network中会有一条请求信息(这里为获取验...

2019-08-20 17:02:23 6611 2

原创 Python+Selenium-19-expected_conditions模块使用

前言当我们打开一个url后,判断打开的页面是否正确,有两种方式:1)判断打开页面的title是否等于或包含预期值① 需要导入模块:from selenium.webdriver.support import expected_conditions②expected_conditions.title_contains 标题包含(多用);titile_is 标题等于2)判断...

2019-08-20 09:54:21 1574 1

原创 Python脚本-2-python批量修改文件名

需求如下:路径下有多个文件夹打开文件夹,如截图,文件命名,需将-1、-2图片等改为对应的1.jpg、2.jpg...代码部分import osdef rename_course(path): """重新命名每一张图片名为:1.jpg、2.jpg等""" files = os.listdir(path) # 路径下所有的文件夹 for fil...

2019-08-14 12:02:19 501

原创 Python脚本-1-python批量修改xml文件实例

需求将文件夹中xml文件的include、preview以及cylinder中的url都改为相对路径层级目录是一个文件夹包含很多子文件夹,子文件夹中有很多文件,其中包括xml文件,需要进行修改的就是此处的tour.xml代码部分import osimport xml.etree.ElementTree as ETdef get_xml(path): "...

2019-08-06 14:40:14 841

原创 测试基础-11-Moco配置文件启动并测试moco接口

前言前面我们使用的都是单个配置文件(test.json),这样针对单个接口操作是没问题的,当然我们也可以将所有接口都放在一个配置文件中,因为配置文件的格式为一个数组类型的 JSON 格式,数组的每一个元素是一个 request/response 的配对。还有一种方式我们设置全局配置文件,即在文件中引入其他配置文件的方式,最后启动时,只针对全局配置文件启动,比较方便单文件配置1)我...

2019-07-15 16:45:45 901

原创 测试基础-10-Moco使用

前言上一篇搭建好了moco环境,本篇为moco中request和response的具体使用moco使用(request部分)1)description字段,在所有JSONAPI中,可以使用description来描述这个会话的目的。它只是用作注释,在运行时将被忽略。//test.json[ { "description": "any response...

2019-07-15 16:45:04 730

原创 测试基础-9-Moco本地服务器搭建

前言moco是一个简单模拟服务器的程序库,可以用来模拟请求与返回数据,下载下来是一个.jar文件,环境运行依赖于java,需要提前安装好java环境moco使用场景:1)可以在单元测试过程中mock测试数据2)前后端分离,后端未开发完毕或者后台没有数据,前端开发可以mock相应格式数据来调试,无需等待后端开发完成或提供相应数据,提升工作效率3)依赖于第三方,数据不便于知晓...

2019-07-15 16:44:39 481

原创 Python基础-47-yaml使用

前言基础的配置数据我们可以用.ini文件、.json文件等来存放,当然yaml也是可以的,并且使用起来更方便,本篇讲解yaml使用安装python中操作yaml文件的库为pyyaml模块pip install pyyaml 直接安装(如下图,安装完成)yaml文件编写的基础规则1)大小写敏感2)使用缩进表示层级关系3)缩进时不允许使用Tab,只允许使...

2019-07-12 17:13:08 332

原创 环境安装-12-Centos7之tomcat+Jenkins环境安装

环境准备:1.服务器: CentOS 72.yum 3.4.33.java 1.84.tomcat5.jenkinsyum环境rpm -qa | grep yum 查看系统是否安装已安装yum环境,如截图,已安装,后面我们可以直接使用yum来安装我们所需要的环境java环境yum list | grep java-1.8.0-openjdk 在...

2019-07-10 08:43:28 611

原创 Python爬虫-17-案例:利用爬虫框架scrapy ,爬取JavaScript动态加载网页,将图片下载至本地

新建项目1)在cmd中创建爬虫项目2)项目结构(由于基础模板设置这里会默认新建一个images.py文件,不设置的话这边可以直接写也是可以的)3)设置settings图片下载地址分析1)查看萌女最新选项的图片2)查看请求信息,发现规律3)浏览器打开urlhttp://image.so.com/zjl?ch=beauty&sn=0...

2019-07-09 08:42:32 1824

原创 Python爬虫-16- pytesseract验证码识别

pytesseractpytesseract是Python的一个OCR识别库,OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。pytesseract其实是对tesseract做的一层Python API封装...

2019-07-02 15:54:52 2338

原创 Python基础-46-邮件发送(带附件)

前言前面一篇主要是只发送纯文本情况,很多时候我们发送邮件都是带附件发的,比如带doc、xlsx、MP3等等MIMEMultipart/MIMEApplication带附件发送import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfro...

2019-07-01 15:02:35 1508

原创 Python基础-45-邮件发送(纯文本)

前言之前有过发送邮件的介绍(python发送邮件),这里更为详细整体的梳理一下SMTP1)SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。2)SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。3)SMTP是发送邮件的协议,Python内置会对SMTP的支持,可以发送纯文本邮件、HTM...

2019-07-01 15:02:19 685

原创 Python+Selenium-18-富文本

前言简单的文本输入框,如input、textarea框直接定位到元素后send_keys就可以了;富文本一般是嵌入在iframe页面中提交的,iframe中一般是一个空的html,其中显示的内容即是body中的内容。以csdn写博客为例右击查看思路(步骤)1)基于上一篇讲解的,可以用到加载配置文件方式来免登陆操作(毕竟登录也是挺麻烦的还有图片验证啥的)2)点...

2019-06-21 17:28:31 548

原创 Python+Selenium-17-加载chrome配置文件

前言在做selenium ui自动化的时候,我们可以加载浏览器的配置文件来保持登录状态(会话)等,即我们可以加载后直接操作,无需再次进行登录操作怎么查看配置文件存放路径打开浏览器输入:chrome://version/下发的个人资料路径如下,我们可以copy一下查看文件夹代码部分# coding:utf-8from selenium import ...

2019-06-20 12:30:28 546

原创 Python+Selenium-16-iframe标签

前言有时候明明我们有正确定位元素,但是执行时还会报错说元素不存在,这时候就要去看看是不是页面有iframe或者frame标签了。iframe标签正常用在表单提交的地方,如登录页面等qq空间登录为例地址:https://qzone.qq.com/查看页面元素,都含有id,可以直接使用id来定位代码如下(此处还没有去处理iframe标签的问题)from selen...

2019-06-19 17:20:10 370

原创 Redis-8-redis其他常用操作

常用操作delete(*names):删除对应name的string、list、hash、set、sorted setexists(name):判断redis的name是否存在,存在返回1,不存在返回0import redisr = redis.Redis()r.set("s001","suner")r.lpush("l001",10)r.delete("s001")pr...

2019-06-10 09:48:08 190

原创 Redis-7-redis操作有序集合(sorted sets)

前言在集合的基础上,为每元素排序,元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。有序集合常用方法zadd(name, mapping):在name对应的有序集合中添加元素,元素为mapping格式,即dict格式zcard(name):获取对应name的有序集合中的元素数量zcount(name, min...

2019-06-10 09:47:57 254

原创 Redis-6-redis操作集合(sets)

前言set集合就是不重复的列表sets常用方法sadd(name,values):给name对应的集合添加元素smembers(name):获取name对应集合的所有元素scard(name):获取name对应集合的个数(集合长度)import redisr = redis.Redis()r.sadd("set001",1)r.sadd("set001",2...

2019-06-10 09:47:38 194

原创 Redis-5-redis操作列表(lists)

前言redis中的List在在内存中按照一个name对应一个List来存储lists常用方法lpush(name,values):在对应name中list的左边添加一个或多个元素lindex(name, index):根本索引值取list中的元素import redisr = redis.Redis()r.lpush("list001",10)r.lpush(...

2019-06-10 09:47:23 526

原创 Redis-4-redis操作散列(hashes对应的字典)

前言redis中的Hash在内存中类似于一个name对应一个dict来存储hashes常用方法hset(name, key, value) :设置一个hash值hget(name,key) :获取name对应key的valuehgetall(name) :获取name对应的所有键值对import redisr = redis.Redis()# name(此...

2019-06-05 13:52:47 170

原创 Redis-3-redis操作字符串(strings)

strings常用方法set():设置值,name不存在就直接设置,name存在即修改name对应的值get(name):获取值import redisr = redis.Redis()r.set("name","suner")print(r.get("name").decode()) # 结果:sunermset():”设置多个值mget(keys, *a...

2019-06-05 10:21:00 173

原创 Redis-2-python连接redis

安装redis安装教程1:windows环境安装redis安装教程2:Centos7环境安装redispython环境安装redis在python中,要操作redis,目前主要是通过一个python的redis模块来实现安装:pip install redispython连接redis前提:因为我的redis是安装在win上的,所以,使用redis,必须先启...

2019-06-05 10:20:09 1454

原创 Redis-1-redis基础

redis简介Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIRedis是 NoSQL(nosql中存储的数据都是key-value形式)技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色redis特性1)R...

2019-06-05 10:19:31 136

原创 环境安装-11-Centos7之Redis安装

安装步骤1)yum install epel-release下载fedora的epel仓库2)yum install redis -y 安装redis3)systemctl start redis 启动redisnetstat -antup | grep 6379 查看redis默认端口4)vim /etc/redis.conf设置...

2019-06-05 10:18:12 205

原创 Python爬虫-15-案例:爬取手机壁纸网址所有图片(三)

前提:本篇结合多线程threading模块来爬取,可以大大缩短下载时间脚本# coding:utf-8import osimport timeimport threadingimport requestsfrom lxml import etreecur_path = os.path.dirname(__file__)file_path = os.path.jo...

2019-06-04 11:52:43 400

原创 Python爬虫-14-案例:爬取手机壁纸网址所有图片(二)

前提基于前一篇的爬取结果,图片是下载下来了,但是有一个问题是,每张图片都很小如截图,打开后是这样的,本篇继续优化,起码保证下载下来的图片可以正常使用哈分析1)打开图片页面后,发现上面有尺寸显示,不同尺寸大小不同2)右击查看我们这里下载的都是默认的120*90的大小3)思考:将这里的尺寸直接替换成我们想要的即可,我这里选的是640*960(在页面看这个尺寸大小...

2019-06-04 11:52:36 345

原创 Python爬虫-13-案例:爬取手机壁纸网址所有图片(一)

前提爬取页面中的最新壁纸的所有图片,并以图片分类的名称保存在相应的文件夹下页面分析1.整体页面:请求第一个页面的地址:http://sj.zol.com.cn/bizhi/new_1.html点击下一页,发现第二个页面的地址:http://sj.zol.com.cn/bizhi/new_2.html由此可以看出,想要爬取指定页面,传递相应的数字给new_后面的数字即可...

2019-06-04 11:52:28 1396

原创 Python+Appium-7-xpath定位

前言定位方式优先选择id --> class(一个页面没有重复的) --> name --> xpathxpath定位这里的关注、推荐、热榜、小说class都一样,所以不便于用class来定位,我们可以用xpath来定位到“热榜”这个元素,并执行点击操作,因为他们的text不一致,所以可以用text来做xpath定位热榜的xpath值为://*[@text='热榜...

2019-06-04 10:46:28 481

原创 Python+Appium-6-class定位

前言基于前一篇的id和name定位的案例,本篇就针对class定位来实现百度搜索功能class定位class定位就是通过UI Automator工具查看的class属性第一个页面搜索框的class值:android.widget.TextView点击后第二个页面的搜索框class值:android.widget.EditText百度一下按钮的class值:androi...

2019-06-04 08:25:04 715

原创 Python+Appium-5-id和name定位

id定位格式:driver.find_element_by_id("resource-id")name定位格式:driver.find_element_by_name("text")查找元素打开百度搜索,需要先定位到搜索框(通过name定位),执行点击操作定位到输入框(通过id定位)脚本编写from appium import web...

2019-05-30 13:56:25 1368

原创 Python+Appium-4-元素定位工具UI Automator Viewer

前言App-UI跟Web-UI自动化操作一样,无非就是定位到元素后去操作元素,本篇介绍一下sdk自带的定位元素工具uiautomatorviewerUI Automator Viewer定位打开uiautomatorviewer启动uiautomatorviewer打开测试app后点击上方第二个按钮device screenshot使用uiauto...

2019-05-30 13:56:02 531

原创 Python+Appium-3-启动百度app

前言针对app的操作本系列都在安卓模拟器完成本篇完成利用脚本来实现启动app的操作,基于前一篇自动化原理的介绍,我们启动app首先需要拿到一些必要的参数必要参数准备第一步:获取设备名称cmd执行adb devices ,获取到设备名为:127.0.0.1:62001aapt工具获取apk包名和launcherActivity1)将测试的apk放在某个目录...

2019-05-30 13:55:42 4921

原创 Python+Appium-2-自动化脚本原理

添加配置创建DesiredCapabilities对象,添加如下必需的配置信息:●deviceName (通过adb devices 获取设备)●appPackage (hierarchyviewer高亮显示的为当前app的)●appActivity创建驱动找到页面元素调用驱动对象driver的相关api:通过adt--sdk--tools-uiaotumator...

2019-05-30 13:55:19 413

原创 Python+Appium-1-环境搭建

安装环境所需python3(python安装教程)Java JDK (JDK安装教程).netFrameworknodejsandroid SDK(SDK安装教程)appiumAppium-Python-Client安装.netFramework下载地址:https://www.microsoft.com/en-us/download/confirmat...

2019-05-30 13:55:02 363 6

原创 Python基础-44-装饰器详解

前言装饰器的简单功能在前面已经有过介绍(装饰器基础),本篇详细介绍一下装饰器的作用被装饰函数不带参数代码部分:# 在每个函数执行前打印出执行的函数名称def print_log(func): def wrapper(): print("当前执行的函数名为:",func.__name__) func() return wr...

2019-05-28 08:44:11 166

原创 Python基础-43-Super()使用

前言在面向对象-继承部分已经有过super继承的使用,这里独立出来梳理一下格式:super().方法(参数) # 对python3有效Super()代码部分:# super()继承class People(): def __init__(self,name,age): self.name = name self.age = ...

2019-05-27 14:17:14 144

空空如也

空空如也

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

TA关注的人

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