自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (3)
  • 收藏
  • 关注

原创 Selenium系列教程 - AutoIt命令行参数

主要内容一、AutoIt下载安装二、AutoIt使用1、识别控件2、编写脚本3、生成exe程序三、通过命令行执行四、通过Python用os模块调用Selenium对网页进行UI自动化时经常会遇到Windows弹框,比如上传、下载框,对于这种弹框,Selenium无法处理,我们常常会选择AutoIt这个工具。一、AutoIt下载安装AutoIt目前最新是v3版本,这是一个使用类似BASIC​​脚本语言​​的​ 免费软件​​,它设计用于Windows GUI(​​图形用户界面​​)中进行自动化操作。它利用

2022-01-26 09:15:00 12416 1

原创 Selenium系列教程 - 文件上传

主要内容一、通过send_keys方法(该方法只适用于input标签)二、通过AutoIt来处理上传文件(适用所有)三、多文件上传在Web UI自动化测试中可能会遇到文件上传的场景,针对该场景我们要区分上传按钮的种类,大体上可以分为两种,一种是input框<input type="file">,另外一种就比较复杂,通过js等实现。一、通过send_keys方法(该方法只适用于input标签)查看上传按钮的元素标签为input标签,调用send_keys方法传入文件路径即可,无需模拟弹出wi

2022-01-25 17:21:08 13483 2

原创 Selenium防踩坑 - Element is not clickable at point...

在自动化测试中,我们操作元素最常用的动作是输入文本和单击元素。因此我们面临的常见错误之一:`Element is not clickable at point...Other element would receive the click:` 。在这篇文章中,我们将进行错误原因的分析和解决方案的讨论。

2021-01-26 11:32:39 2657 2

原创 Selenium系列教程 - WebDriverWait 详解以及自定义判断条件

主要内容1. WebDriverWait 参数与调用方法2. expected_conditions 模块3. WebDriverWait 与 expected_conditions 示例代码4. 自定义条件4.1 使用 lambda4.2 封装一个类1. WebDriverWait 参数与调用方法from selenium.webdriver.support.wait import WebDriverWait----------------------------------------------

2021-01-20 18:09:05 11125 8

原创 Selenium防踩坑 - StaleElementReferenceException 解决方案

主要内容1. 异常原因2. 解决方案1. 异常原因在执行脚本时,有时候引用元素对象会抛出如下异常:selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document字面上的意思是,引用的元素已过时。原因是页面刷新了,此时当然找不到之前页面的元素,就算是后退回来的页面也是不一样的。我们来看看

2020-12-22 15:00:42 20851 9

原创 Selenium系列教程 - 番外篇 控制浏览器的两种方式

对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。会发现打印出了 “百度一下,你就知道” 的网页标题。这样我们就实现了对一个已打开的浏览器的控制。利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。对于-remote-debugging-port值,可以指定任何打开的端口。现在,我们需要接管上面的浏览器。更多需求可以自己在此基础上进行修改。

2022-11-02 11:21:23 976 1

原创 使用jmeter发送https接口

主要内容一、https协议与http协议的区别1. 连接方式不同2. 数据传输安全性不同3. 证书不同二、下载证书三、转成keystore文件四、添加证书一、https协议与http协议的区别1. 连接方式不同http:http协议简单,是无状态的https:https协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全2. 数据传输安全性不同http:是超文本传输协议,信息是明文传输https:使用具有安全性的ssl加密传输协议3. 证书不同

2022-04-29 11:17:47 1358 1

原创 Nginx下同域部署多个Vue项目(history路由模式),报404、500错误

一、环境系统: windowsnginx: 1.20.2nodejs: v10.24.0npm: v6.14.11@vue/cli: 4.5.13二、问题描述新建Vue项目的时候,如果选择hash模式的话,地址上都会带一个#号,本人嫌太丑,选择了history模式,到了部署项目的时候,刚好又需要多个项目部署在一起。部署完发现:① js、css文件找不到、② 页面报404、③ 页面报500。三、解决方案1、修改vue项目中的vue.config.js文件a项目增加以下内容:module.

2022-04-11 16:32:48 6116 4

原创 Selenium系列教程 - 分布式自动化测试 selenium-server-standalone 搭建

主要内容1. 预置环境2. Selenium Grid 环境安装3. Selenium Grid 启动服务中心(hub)和节点(node)3.1 启动 hub3.2 注册 node4. 应用1. 预置环境 Java 环境 Python3 环境2. Selenium Grid 环境安装Selenium Grid 是 Selenium 套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。优点:同时在不同的浏览器、操作系统和机器上运行测试。最大程度用于兼容性测试;减

2021-09-29 15:56:33 3054 2

原创 如何彻底禁用谷歌Chrome更新

1. 打开注册表编辑器。按下Win+R,输入regedit,打开注册表编辑器。2. 展开“HKEY_LOCAL_MACHINE”文件夹。3. 展开“SOFTWARE”文件夹。4. 展开“Policies”文件夹。5. 右键点击“Policies”文件夹,选择“新建” → “项”。将新的项命名为“Google”。6. 右键点击新建的“Google”文件夹,选择“新建” → “项”。 将新建的项命名为“Update”(更新)。7. 右键点击右侧的面板,选择“新建” → “DWORD”。将

2021-09-26 17:51:38 23487 5

原创 Selenium防踩坑 - no such element: Unable to locate element

主要内容1. 问题描述2. 原因分析3. 解决方案1. 问题描述在自动化测试中,我们定位元素经常面临的常见错误之一: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:... 。除了定位表达式不正确导致定位不到元素外,还有一种是发现不稳定,有时候能找到有时候找不到,甚至有些直接就是找不到。在这篇文章中,我们将进行错误原因的分析和解决方案的讨论。2.

2021-09-08 11:24:00 6287

原创 手把手教你如何使用 Django + Vue.js 快速构建项目

主要内容1. 前言2. 环境准备3. 创建 Django 项目4. 创建 Vue.js 前端项目1. 前言本篇将基于Django + Vue.js,手把手教大家快速的实现一个前后端分离的Web项目。2. 环境准备Python 3.6.1Mysql 5.7.23Pycharm (专业版)Node3. 创建 Django 项目创建完成后,目录结构如下所示使用 Navicat 工具创建数据库 DjangoVue安装 mysqlclient 库配置 settings.py 文件

2021-08-19 23:35:58 7366 9

原创 No ‘Access-Control-Allow-Origin‘ header is present on the requested resource 实现跨域的解决方案

问题描述当请求一个不是本系统的接口时会提示:Access to XMLHttpRequest at 'http://****' from origin 'http://****' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.原因分析当前请求是跨域请求,由于安全问题,这种请求会受到同源策略限制,因为跨域请求有可能被不法分子利用来

2021-08-10 19:16:23 987 1

原创 Selenium系列教程 - 下拉列表处理(select标签、非select标签)

主要内容1.下拉列表类型2. Select 下拉列表处理2.1. Select 方法列表2.2. Select 示例代码3. 非 Select 下拉列表处理下拉列表的类型可以分为 select 标签和非 select 标签,如:......

2021-08-02 16:45:17 2419 4

原创 Selenium系列教程 - 使用 expected_conditions 判断元素

1. expected_conditions 模块我们看一下 expected_conditions 提供的条件有哪些:......expected_conditions 模块最常见的就是与 WebDriverWait 配合使用,如:......

2021-07-20 17:31:09 1233

原创 如何彻底关闭Windows10的自动更新?

你是不是也常常被Windows「更新」困扰呢?尤其是有时自动更新之后,系统反而变得怪怪的,甚至软件都不能用了。如果你不想要变成第一时间自动更新受害者,你不妨手动关闭自动更新的功能。1. 禁用任务计划......2. 关闭服务......3. 修改注册表......

2021-06-09 15:54:14 2131 1

原创 Selenium系列教程 - 日期控件处理

除了上面这种,你还会遇到各种花里胡哨的日期控件,如果一个个想着怎么去选择,可能你会疯掉! 其实很简单,我们可以把它当成一个普通的input框来处理!但是,很多此类型的input框都是禁止手动输入的,这时候我们就可以用js把禁止输入的readonly属性干掉就好了。

2021-03-09 14:32:28 1073

原创 Selenium系列教程 - 解读selenium等待方式

主要内容1. 强制等待 (`time.sleep()`)2. 显式等待 (`WebDriverWait`)3. 隐式等待 (`implicitly_wait()`)1. 强制等待 (time.sleep())    当一个页面被加载到浏览器时, 该页面内的元素可以在不同的时间点被加载。这使得定位元素变得困难, 如果元素不再页面之中,会抛出异常。最糟糕的案例是使用time.sleep(),它是一种最简单粗暴的方法,将条件设置为等待一个确切的时间段。from selenium import webdriv

2021-01-15 16:18:19 1237 2

原创 Selenium系列教程 - 使用Keys模拟键盘操作

这里写目录标题1. Keys类简介2. Keys方法列表3. Keys实例1. Keys类简介    平常我们会用到很多快捷键,那么如何来模拟快捷键操作呢。selenium中给我们提供了大部分的键盘操作方法,如:全选、复制、粘贴等。首先需要导入Keys这个包。    from selenium.webdriver.common.keys import Keys2. Keys方法列表class Keys(object): """ Set of special keys codes.

2021-01-12 11:43:07 3245 7

原创 Selenium系列教程 - 使用ActionChains模拟鼠标操作

主要内容1. ActionChains类简介2. ActionChains方法列表3. ActionChains实例1. ActionChains类简介    前面我们在Selenium系列教程 - 页面元素操作中使用到element.click()方法点击元素,实际上鼠标的操作不单单只有单击,现在页面中随处可以看到需要右击、双击、鼠标悬停、甚至是鼠标拖动等操作。    selenium中给我们提供了ActionChains类来处理这类事件。注意,当你调用ActionChains的方法时,不会立即执行

2021-01-10 14:51:03 1190

原创 Selenium系列教程 - 番外篇 js定位

主要内容前言1. 定位单个元素  a. 通过id定位  b. 通过css选择器定位2. 定位一组元素  a. 通过name定位  b. 通过标签名定位  c. 通过class类定位  d. 通过css选择器定位示例代码前言    我们除了可以使用selenium的方法定位元素外,还可以通过js来定位,以下总结了几种常用的js定位方法:1. 定位单个元素  a. 通过id定位    document.getElementById("id")  b. 通过css选择器定位    document.

2020-12-29 13:28:06 538

原创 Selenium防踩坑 - clear()失效 解决方案

主要内容问题描述解决方案通过全选的方法清除数据通过执行js的方法清除数据示例代码问题描述     使用clear()方法没反应。或者清除了文本,然后在执行输入命令时,前面清除的文本又会出现。解决方案通过全选的方法清除数据element.send_keys(Keys.CONTROL, "a")element.send_keys(Keys.BACKSPACE)通过执行js的方法清除数据js = 'document.querySelector("#kw").value="";'driver.e

2020-12-29 11:18:34 593

原创 Selenium系列教程 - 调用JavaScript

主要内容1. JavaScript的使用(原生js和jq方式)a. 获取元素的属性b. 设置元素的属性c. 删除元素的属性2. Selenium如何执行JavaScript3. 应用场景a. 日期控件b. 滚动视图c. 输入文本1. JavaScript的使用(原生js和jq方式)a. 获取元素的属性//原生js.getAttribute("属性")//jquery.attr("属性")------------------------------------------------------

2020-12-18 18:06:33 2038 2

原创 Selenium系列教程 - switch_to讲解:切换handle、frame、alert

主要内容多窗口切换(handle)frame切换处理Alert弹窗多窗口切换(handle)current_window_handle # 获取当前页面窗口的句柄window_handles # 获取所有页面窗口的句柄switch_to.window(window_name) # 将定位的页面切换到指定的window_name页面(window_name:指定页面窗口的handle)# 切换到新窗口关键代码all_handles =

2020-12-18 16:00:51 1793 4

原创 Selenium系列教程 - 浏览器控制

    这节主要介绍的是操作浏览器本身的方法,比如打开浏览器,关闭浏览器,设置浏览器的大小和浏览器前进后退等。首先是如何打开浏览器地址:get()设置浏览器大小:set_window_size()在执行自动化脚本时一般都是在全屏模式下执行,这时可以使用maximize_window()使浏览器最大化:maximize_window()相应的还提供了浏览器最小化方法:minimize_window()控制浏览器后退:back()控制浏览器前进:forward()刷新页面

2020-12-17 16:18:21 278 1

原创 Selenium系列教程 - 页面元素操作

    前面我们已经学会了如何定位元素,这只是自动化测试的第一步,接下来我们需要对元素进行操作。清除文本输入框element.clear() # 这里 element 代表定位到的元素,下同点击元素element.click()输入文本element.send_keys()提交表单element.submit()获取元素标签名element.tag_name # 注意这里没有括号获取元素文本内容element.text # 注意这里没有括号获取元素位置elemen

2020-12-17 15:34:21 360 1

原创 Selenium系列教程 - xpath定位和css定位

    实际项目中使用较多的是xpath定位和css定位。XPath是XML文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素。xpath比较强大,而css选择器在性能上更优,运行速度更快,语法上更简洁。以下分别用两种方法定位百度搜索框:ID定位XPATH中的元素id使用以下内容定义:[@id='kw'],而在CSS中使用:#kw。XPATH:find_element_by_xpath("//input[@id='kw']")CSS: find_element_by_css_sel

2020-12-17 14:05:47 1490 1

原创 Selenium系列教程 - 元素定位(下)

    自动化测试中的核心是元素定位,只有在定位到对象的基础上,才可以对对象进行操作。    在一个页面中有很多种方法可以定位到元素。在项目中,你可以选择最合适的方法去定位到元素,selenium提供了以下方法:定位单个元素(匹配第一个符合条件的元素)find_element_by_idfind_element_by_namefind_element_by_tag_namefind_element_by_class_namefind_element_by_link_textfind_elem

2020-12-17 11:32:13 373 2

原创 Selenium系列教程 - 元素定位(上)

首先我们打开百度首页,页面上有输入框、按钮、文字、图片、链接等,我们要做的就是模拟鼠标和键盘来操作这些元素。那么我们要操作这些元素的前提是找到它们。那么如何找到他们呢?在输入框点击右键,然后选择检查,如下图:从上图可以看到,百度输入框有个ID属性:id=”kw”,我们这里通过id属性来定位到这个元素(我们选择的这个属性要有别与其他元素的属性,换言之,这个id要具备唯一性)接下来,我们写个简单的脚本:1)启动浏览器,我们这里用Chrome2)打开百度首页,https://www.baidu.c

2020-12-17 10:57:05 308

原创 Windows下载并安装RabbitMQ

目录Windows安装RabbitMQ1. Erlang 下载与安装2. RabbitMQ 下载与安装3. RabbitMQ 配置Windows安装RabbitMQ由于RabbitMQ是基于erlang的,所以,在正式安装RabbitMQ之前,需要先安装一下erlang。1. Erlang 下载与安装Erlang与RabbitMQ版本的对应关系Erlang下载地址这里下载的是19.3版本,以管理员身份运行,然后一路 next 到底即可。2. RabbitMQ 下载与安装RabbitMQ下

2020-08-07 16:50:13 2447

原创 requirements.txt的使用

requirements.txt生成两种方法:如果项目使用virtualenv环境,直接使用pip freeze即可,但是如果项目的依赖没有维护,就会很麻烦,这时我们就需要一个叫pipreqs的工具,可以帮助我们自动生成requirements.txt文件。方法一:pip freeze > requirements.txt这种方式配合 virtualenv 才好使,否则把整个环境...

2019-12-20 14:23:30 1970

原创 解决CentOS忘记root密码

CentOS 6的root密码修改1、开机按esc2、按 e 键进入编辑模式3、选择Kernel /vmlinz-2.6.32-696.e16… … 后按 e 键编辑此项4、进入该编辑模式后,在quiet后面输入“空格”+ simple 或者 1 然后回车5、按 b 键进入单用户模式6、输入 passwd root,然后输入2次新密码7、输入 reboot 回车,重启8...

2019-09-24 11:50:59 235

原创 win7软件图标异常解决

新建txt文件,复制以下内容到文本,将扩展名改为.bat然后右键选择“以管理员方式运行”,最后刷新一下桌面,图标就恢复了@echo offtaskkill /im explorer.exe /fcd /d %userprofile%\appdata\localdel iconcache.db /astart explorer.exeecho 执行完成pause...

2019-09-05 10:09:58 1985 1

原创 Python连接oracle数据库(报:DPI-1047: 64-bit Oracle Client library cannot be load 的问题解决)

1.安装cx_oracle模块2.连接oracle数据库import cx_Oracle #引用模块cx_Oracleconn=cx_Oracle.connect(‘用户名/密码@主机ip地址:端口号/Service Name(SID)') #连接数据库c=conn.cursor() ...

2019-09-04 11:28:02 4980

原创 Sublime Text 3中文乱码的处理

安装Package Control这是一个用来安装其他插件的包,不管装什么插件,首先要先装这个包才行打开Preferences菜单,并选择 Browse Packages…系统会打开Sublime Text 3的Packages文件夹,回到上一级菜单,然后打开Installed Packages文件夹下载并将下载的PackageControl.sublime-package拷贝到Ins...

2019-08-30 14:25:12 177

原创 使用 Sublime Text 编写 VBS 脚本

最近在用QTP编辑VBS脚本,但是QTP本身的IDE环境不好用,因此这里推荐一款好用的工具:Sublime TextSublime Text 下载地址:https://www.sublimetext.com/VBS插件的下载地址:https://github.com/SublimeText/VBScript下载完插件后, 解压缩并将文件夹名称改成 VBScript, 然后将文件夹复制到Su...

2019-08-30 10:46:19 4212

原创 TortoiseGit上传项目代码到github方法

TortoiseGit上传项目代码到github方法用TortoiseGit在本地生成SSH,进入‘开始’,找到git双击Puttygen,我们要生成密钥,这个是等会在GitHub上面配置秘钥的(SSH):点击Generate生成密钥,生成密钥的时候,记得鼠标要在进度条下不停地移动,不然的话,进度会卡住,生成完毕后点击Save private key,选择‘是’,保存到你熟悉的一个文件夹,...

2019-08-06 14:27:16 174

原创 UFT 动态加载外部共享对象库

使用外部共享对象库有2种方法1,通过菜单Resources -> Associate Repositories,关联外部对象库到指定的Action。2,通过RepositoriesCollection对象,在运行时灵活的加载,自动关联到当前Action。a. 加载外部对象库b. 执行脚本c. 移除加载的对象库'Upload object repository Repositor...

2019-07-31 14:40:26 414

转载 恢复Surface Pro 高级电源设置里各类配置项提高外接电源模式下的性能(外接电源莫名很卡,拔掉电源又正常,实则被降频)

转自:恢复Surface Pro 4高级电源设置里各类配置项提高外接电源模式下的性能写在前面:本贴内容:如何恢复Surface Pro 4自带Windows 10系统控制面板-电源选项-更改计划设置-更改高级电源中各种常规配置选项本贴目的:通过简单增加注册表项,使得Surface Pro 4在接电源当常规笔记本使用的情况下,CPU频率不再动态浮动,像常规笔记本一样稳定在高频率,发挥出最大的性...

2019-07-30 13:39:05 5824

原创 如何设置SSH远程连接docker容器

如何设置SSH远程连接docker容器创建容器进入容器设置容器密码安装ssh及修改配置安装ssh server修改配置重启ssh服务远程连接创建容器在ubuntu镜像中创建容器,并将docker服务器的50003端口映射到容器的22端口上docker run -it -d -p 50003:22 ubuntu( -d : 保持在后台运行)或者先创建容器后再启动docker run ...

2019-03-05 10:49:55 16630 1

MyQtpFrame.zip

QTP自动化测试框架,解压就能使用。

2019-08-01

HTMLTestRunner 3.X版

HTMLTestRunner

2017-07-06

HTMLTestRunner2.7版

HTMLTestRunner

2017-07-06

空空如也

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

TA关注的人

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