自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 selenium webdriver 原理概述

背景虽然掌握selenium webdriver提供的各种方法,就可以做web的UI自动化,但是本着知其然,也要知其所以然的态度,也为了提升自己。了解下selenium webdriver的原理是必要的。搞清楚webdriver是怎么连接和操作浏览器,对于使用webdriver的各种方法,也会更加明悟。况且源码就在本地,花些精力读一下源码,不费事。selenium概述selenium经过不断...

2020-03-22 22:42:37 1117

原创 Django3+Vue3进行前后端开发环境搭建

背景本文基于具备一定python后端基础,想通过基于Django,结合时下热门的前端框架Vue,来了解web前后端开发的角度作总结描述。因此,本文假定已经安装好了python环境、Django模块。环境需求python开发环境Django模块Node.jsVue-Cli环境准备Node.jsnode.js安装参考:https://www.runoob.com/nodejs/nodejs-install-setup.htmlVue-Clinpm安装模块速度慢,这里先安装cnpmn

2021-08-21 19:31:54 6084 4

原创 python调用java之Jpype实现java接口

python实现java接口概述java程序java接口java测试函数在python中实现java接口的两种方式第一种:JImplementsJImplements的使用示例JImplements不友好的地方第二种:JProxy总结示例源码概述本文介绍在python中实现java接口。JPype 可以通过使用装饰器或手动创建 JProxy 来实现 Java 接口。Java 只支持代理接口,因此我们不能扩展现有的 Java 类。笔者在测试领域,通常使用python调用java程序,达到在通过pyth

2021-08-07 16:46:26 1896

原创 python调用java之Jpype异常机制

Jpype异常机制概述JExceptionJException对象的两个方法示例javapythonTips总结概述错误处理是不可或缺的,Jpype为了将java异常机制和python异常机制连接起来,提供了JException对象。在python使用该对象完成对java接口的异常捕获。JException所有 java.lang.Throwable 对象的基类。可以理解为这个对象代表所有java异常。类似puthon中的异常是直接或间接扩展 Exception 类。python中捕获Excep

2021-08-07 15:05:40 698

原创 python调用java之jpype参数类型转换

本章概述python调用java,关键的一点是python 类型和 Java 类型之间的转换。这个功能借助JPype完成,Jpype提供了一系列API,帮助使用者完成python参数到java参数的转换。本章的目的是尽可能覆盖java参数类型,通过示例演示如何将python数据类型转换为指定的java数据类型。参数类型转换参考表这部分原文链接如下:http://jpype.sourceforge.net/doc/user-guide/userguide.html#conversion下图横坐标代

2021-07-31 17:20:41 3274 5

原创 python调用java之启动jpype

test

2021-07-25 11:32:09 1833 1

原创 logging 分线程\进程输出日志文件

背景前段时间,将公司框架的日志机制从所有线程\进程都输出日志到一个文件里,改造成线程\进程将各自的日志输出到各自的日志文件里,由于公司是内网涉密环境,所有资料都无法带出,这里总结仅描述思路。假设通过logging模块封装好后可供调用的日志方法是:myInfo(msg)改造前所有线程\进程调用myInfo,myInfo中使用的都是同一个加载同样文件处理器的记录器。所以不同的线程\进程,日志出口都是同一个文件。改造后框架依然调用myInfo(msg)方法输出日志。区别在于,在myInfo执行时

2021-05-16 22:40:32 535

原创 logging模块 日志文件 程序运行时报文件正在被使用

背景公司的自研框架,使用logging模块承担日志功能。之前的做法是将所有线程和进程的日志都打印在一个文件里,且框架每次运行时都将用open函数w模式截断日志文件,保证每次运行日志的独立性。后面根据使用场景,需要分线程、进程打印日志,即每一个线程\进程的日志都使用不同的日志文件打印。此时open函数截断日志文件的模式已经不可用,在每次运行前,需要将之前产生的日志文件删除。由于框架有一个UI界面,在UI上重复运行框架,到删除日志文件的代码时,会报日志文件正在使用,无法删除。分析logging模块文件

2021-05-16 21:47:32 1073

原创 Django基础知识点记录:安装、配置、URL规则

背景:因为在学习django框架知识,顺便记录下相关知识点。仅仅是学习过程中的记录,没有系统性总结。相关知识细节,请参考《玩转Django2.0》黄永祥著。 或者官方文档。django环境安装django: pip install Django创建项目: 命令行下->django-admin startproject project_name (#eg. django-adminstartproject myWeb)创建应用: 命令行下-> cd myWeb -> pyt

2021-05-16 20:52:39 6994 3

原创 多线程threading之私有变量

文章目录前言一、threading.local()对象二、示例:前言python多线程的特征之一是:子线程共享主线程的对象。这在有些时候很方便(当然不注意也会造成bug。),但有些时候,我们确实需要每个线程仅维护自己的本地数据,即私有变量。一、threading.local()对象线程本地数据是特定线程的数据。管理线程本地数据,只需要创建一个local (或者一个子类型)的实例并在实例中储存属性:mydata = threading.local()mydata.x = 1在不同的线程中,

2020-11-23 21:35:01 876 1

原创 Python 装饰器记录

装饰器入门在这里,我们先不用理解实现装饰器需要的几个python特性,以及装饰器的内在原理。我们仅仅先了解函数装饰器的基本作用,以及怎么实现一个具备基本作用的函数装饰器。函数装饰器的基本作用:字面理解,装饰函数用的。其作用也不是很高大上,不过是装饰器,可以对其装饰的函数对象,做一些这个函数执行前的准备工作,以及执行后的请理工作。工作流程类似于:setup()fun()teardown()而装饰器不过是改变了其表现形式而已,变成了这样:@do_itdef fun(): pass所

2020-11-03 20:58:46 698

原创 Python import用法之2个细节

本文不介绍import的用法和机制。仅介绍一个细节。该细节需要和以下两点有联系:# 1. 从一个模块中导入指定的类或者方法form A import b# 2. 从一个模块中导入全部from A import *笔者之前根据这两个知识点,从其表面意思理解, 忽略了该细节。该细节是:第二种方式,导入全部,是真的导入全部(当然除了if name == 'main’里面的东西)。而第二种方式,确不仅仅只导入了指定的类和方法。举例说明:有个名命为A的模块,内容如下我们从另一个模块中impo

2020-11-02 21:59:33 332

原创 python调用具备加载dll功能的java时UnsatisfiedLinkError:或者python加载dll失败

背景详情见如下:我有一段通过python调用java api的代码,该代码诡异的地方在于,当我import第三方包时,就会导致异常,如果没有引入第三方包,则可以正常运行。代码类似如此:import jpypeimport xlwt # 这一步注释与否会决定是否报错if name == “main”:jars = “D:\MyJar.jar”jvm_path = jpype.getDefaultJVMPath()jvm_cp = “-Djava.class.path={}”.form

2020-09-08 21:07:16 462

原创 python赋值、浅拷贝、深拷贝总结概述

背景python中赋值、浅拷贝、深拷贝这三个知识点,表面看都是对一个对象复制为另一个对象,但由于涉及到对象值和对象地址,所以这三个知识点在细节方面,有所差异。面试时也有被问到。所以做个总结。概述先罗列如下概念:不可变对象:对象的值是不可变的。我们不可以修改该对象的值。该对象的值和地址一定是唯一对应的。如果强行赋予引用该对象的变量新的值,相当于创建了一个新对象,新的对象有新的值和新的地址。...

2020-04-26 15:52:05 199

原创 pytest之fixture参数化

背景本文总结fixture参数化说明pytest除了支持基本的测试用例参数化,还支持fixture参数化。当然,fixture参数化的过程与测试用例参数化有点点区别。fixture的参数化涉及到fixture的参数params,和内置的fixture:request。为一个参数的fixture参数化。示例如下:为一个参数的fixture参数化。# ./conftest.pyimp...

2020-03-30 20:54:52 4378

原创 pytest之测试用例参数化

背景本文总结pytest的测试用例参数化。说明软件测试中,输入相应值,检查期望值,是常见测试方法。在自动化测试中,一个测试用例对应一个测试点,通常一组测试数据无法完全覆盖测试范围,所以,需要参数化来传递多组数据。pytest的测试用例参数化使用如下装饰器即可完成。@pytest.mark.parametrize(argnames, argvalues)# 参数:# argnames...

2020-03-30 19:54:37 10685

原创 pytest之fixture

背景本文总结pytest中极具特色和功能强大的fixture。说明本文将从以下几点进行总结:fixture的概念和作用fixture的参数如何使用fixturefixture的优先级fixture的作用范围fixture的autouse参数说明fixture的重命名fixture的概念和作用参考unittest框架中的setup\teardown的概念来理解fixtur...

2020-03-29 22:18:20 493

原创 pytest之conftest.py

背景本文介绍pytst中极具特色conftest.py文件。conftest.py是什么首先弄明白conftest.py文件是什么。之前的几篇文章,总结pytest的运行规则,mark标记,命令行,断言,都没有用到conftest.py文件。所以,当我们需要使用conftest.py,需要手动创建这个文件。我们需要联系着pytest的另一大特色fixture来介绍conftest.oy。...

2020-03-29 15:54:20 2353

原创 pytest之assert断言

背景本文总结使用pytest编写自动化测试时常用的assert断言。说明本文将从以下几点做总结:为测试结果作断言为断言不通过的结果添加说明信息为预期异常作断言为失败断言自定义说明信息为测试结果作断言在断言方面,pytest框架比其他类似的框架(比如unittest)更加简洁,易用,我想这是我选择pytest作为自动化测试框架之一的原因之一。pytest的assert断言关键...

2020-03-29 15:02:37 12588

原创 pytest之mark

背景本文总结pytest提供的mark功能。说明mark可分为2类:一类是系统内置的mark,不同的mark标记提供不同的功能。二类是自定义的mark。该类mark主要用于给测试用例分门别类,使得运行测试时可以指定运行符合哪一类标记的测试用例。系统内置mark系统内置mark可通过pytest --markers指令查看。如下:有一些笔者没弄懂,请了解的读者解惑。'''@p...

2020-03-28 17:46:55 2171

原创 pytest之指定测试范围

背景本文总结如何指定pytest当次运行的覆盖范围。总体来说,可以指定运行单个测试目录,单个文件,单个测试类,单个测试类中的方法,单个函数。而这些指定仅和一个参数有关。说明首先看示例程序的目录结构:以示例说明:# 指定运行单个测试目录pytest.main(['./test_case'])# 指定运行单个测试文件pytest.main(['./test_case/test_fu...

2020-03-28 16:33:07 1987 1

原创 pytest之运行测试

背景:windows下,pytest运行测试主要有2种方式,分别是通过cmd运行,和通过pthon解释器运行。通过CMD运行:首先,启动cmd.exe,cd到用例文件夹所在的目录,然后可以执行以下命令来运行pytest.pytestpy.testpython -m pytest示例:D:\Python3.7\project\pytest>pytest==========...

2020-03-28 11:56:50 475

原创 pytest之命令行选项

背景pytest的命令行选项可以设置pytest的运行方式和运行结果。了解各种命令选项的含义,有助于我们根据测试场景,更灵活的使用pytest。如何查看全部命令行选项windows系统下,打开cmd,输入pytest --help常用命令行选项介绍–collect-only该选项不启动测试,执行该命令选项,仅会罗列出当前设置下,将会被执行的用例。示例1:import pytest...

2020-03-25 22:05:49 1310

原创 Pytest之测试命名规则

背景:pytest以特定规则搜索测试用例,所以测试用例文件、测试类以及类中的方法、测试函数这些命名都必须符合规则,才能被pytest搜索到并加入测试运行队列中。默认搜索规则:如果pytest命令行有指定目录,则从该目录中开始查找测试用例文件,如果没有指定,则从当前运行目录开始查找文件。注意,该查找是递归查找,子目录中的文件也会被查找到。并不是能够查找到目录下的所有文件,只有符合命名规则的...

2020-03-24 22:03:25 5926

原创 python3 selenium 浏览器窗口处理

背景selenium webdriver提供了几个处理浏览器窗口的方法,包含设置和获取窗口大小,位置。以下为总结。webdriver提供的方法:# 获取浏览器窗口大小,返回值是一个包含长和宽属性的字典。get_window_size(windowHandle='current')# 设置浏览器窗口大小set_window_size(self, width, height, windo...

2020-03-08 11:45:13 514

原创 pyhton3 selenium 窗口截图

背景selenium webdriver提供了当前窗口截图的方法,以下为总结。提供的方法概述:# 参数filename为想要保存图片的路径,可以是相对路径和绝对路径。但是文件名需要以png扩展名结尾# 截图窗口图像并保存为png格式的图片save_screenshot(filename)# 不要被方法名迷惑,这是以二进制数据格式保存当前窗口截图get_screenshot_as_p...

2020-03-08 10:57:40 578

原创 python3 web自动化 pywinauto实现 win控件处理上传文件

背景web中有上传下载的操作,都会出现属于windows控件的对话框。web自动化中,下载操作可以通过设置浏览下载模式来避免接触windows控件,但是上传操作需要接触并处理windows控件的对话框的自动化操作。例如下图,邮箱上传附件:解决方法本文借助pywinauto框架实现在上传附件过程中windows控件的自动化操作。主要用到该框架的以下方法:# 导入pywinauto模块f...

2020-03-07 18:55:01 3096 1

原创 python3 web自动化 定位悬浮框,当Paused in debugger失效时

背景之前掌握了对于悬浮框的定位方法,即通过在Sources里按F8或者Ctrl+\,使得Paused in debugger悬浮框不会随着鼠标移出消失。但是在工作中,发现对于有的悬浮框,这种方法失效了。具体的表现情况是:当悬浮框出现时,F8或者Ctrl+\,不会出现Paused in debugger。因此在鼠标移出时,悬浮框则又消失了。解决思路:此时连目标元素的面都见不着,就不好定位。所以...

2020-03-07 15:59:10 529

原创 python3 web自动化 定位悬浮框

背景在web中,悬浮框的特点是当检测鼠标进入时,发生弹出悬浮框事件,当鼠标退出时,悬浮框在页面上消失。此时,若依然通过定位其他元素的方式,不能顺利的定位到悬浮框内的元素。悬浮框示例:上图中被标识的就是悬浮框,当鼠标移开时,就会消失,导致不能直接定位里面的元素。解决方案:该解决方案的关键点是保证鼠标退出时,悬浮框不会消失。这样我们就可以用定位其他元素的方式去定位悬浮框内的元素了。如何做到...

2020-03-07 15:32:40 2235 1

原创 python3 web自动化 selenium处理select标签形式的下拉框

背景web中的下拉框有的是使用select标签创建,有的不是。对于非select标签的下拉框以及其元素选项,可通过与其他元素相同的方法去定位。对于select标签的下拉框,selenium webdriver提供了Select类来处理,比较方便易用.Select类导入方式和常用 方法# 导入方式from selenium.webdriver.support.select import Se...

2020-03-07 11:20:25 1528

原创 Python3 web自动化 selenium处理警告框

背景:在web自动化测试时,会有在某个操作后出现警告弹窗,如下图:webdriver提供的解决方法:对于警告框的处理,selenium webdriver提供相应的方法:# webdriver处理目标切换到警告框,并返回一个alert对象alert = webdriver.switch_to.alert()# 返回警告框中的提示信息alert.text# 接受警告框,相当于在...

2020-03-01 21:42:19 571

原创 客户端程序自动化测试 图片对象判断-pywinauto获取图片坐标,PIL实现图片对比

本文主要参考以下博文,感谢其作者的总结分享。https://www.cnblogs.com/ybcao/p/5463030.htmlhttps://www.cnblogs.com/fnng/p/4881102.html背景:做CS架构的客户端应用程序UI自动化测试时,需要用图标的状态来判断程序运行的结果。图标的控件类型为Image。所以需要通过判断图标所在的图片来实现自动化用例中的断言。...

2020-03-01 21:06:00 4560

原创 web自动化selenium 多窗口切换

背景web自动化测试中,有时候点击一个按钮或者一个链接,会弹出新的窗口。如果自动化测试需要处理新窗口,需要将webdriver切换到新打开的窗口。解决方法:webdriver提供方法完成切换窗口的操作:# 返回当前窗口的句柄webdriver.current_window_handle# 返回当前会话中所有窗口的句柄webdriver.window_handles# 切换到指定...

2020-02-29 21:12:13 702

原创 python selenium 表单切换

背景在web自动化设计时,如果目标定位元素是frame/iframe表单内的元素,在当前页面中使用定位方法是无法定位到该元素的。因为WebDriver只能对当前页面中元素进行定位,frame表单内嵌页面,可以理解为相对当前页面的另一个页面了。所以无法完成定位。比如上图中,126邮箱登录界面,与登录的元素正常方法下是无法定位到的。会抛出如下异常:selenium.common.excepti...

2020-02-29 18:46:36 814

原创 web自动化 selenium webdriver的等待方式概述

背景自动化测试系统运行中,会由于网络等原因导致定位元素超时失败,从而造成测试结果的不准确性。需要合理的等待机制,保障自动化测试系统的稳定性和健壮性。笔者将在参考如下博文的基础上,再表述自己的理解,完成这篇关于web自动化中等待机制的总结。参考:https://blog.csdn.net/Wuli_SmBug/article/details/82053372三种等待方式强制等待隐式等待...

2020-02-29 17:13:59 198

原创 selenuim之ActionChains类--模拟鼠标操作方法

首先通过源代码了解ActionChains类提供的模拟鼠标操作方法源码路径: D:\Python3.7\Lib\site-packages\selenium\webdriver\common\action_chains.py源码:# Licensed to the Software Freedom Conservancy (SFC) under one# or more contribut...

2020-02-23 20:16:51 685

原创 Selenium WebDriver提供的常用的方法概述

背景WebDriver提供的方法,一些是我们常用的,可以模拟使用浏览器时的大部分操作。from selenium import webdriverfrom time import sleepfrom selenium.webdriver.common.keys import Keyschrome_driver = r'D:\Python3.7\Lib\site-packages\sel...

2020-02-23 12:52:05 226

原创 Python3+selenium总结之定位示例

背景以简单的示例描述selenium webdriver提供的定位方法,显得更形象。对自身也算是夯实基础。id定位上图标识部分为目标对象,通过id对其定位name定位如上图,通过对象的name属性定位输入框,但是该输入框对象的name属性非唯一。这里可以使用定位一组元素的方法find_elements_by_name()来定位。如下图。结果如下图class定位通过cla...

2020-02-22 20:02:54 538

原创 Python3+selenium总结之定位概述

背景ui自动化中,无论是B/S自动化,还是C/S自动化,,定位和识别元素都是自动化设计的基石。若不能准确定位识别目标对象,自动化将无法进行。在此总结下目前已知的web自动化框架selenium中定位元素方法。若有遗漏,还请不吝赐教。Selenium WebDriver中提供的定位元素方法1. 常见的8种定位方法: #id定位find_element_by_id( id ) #n...

2020-02-22 11:39:01 394

原创 批处理无限循环执行第一行导致批处理无法运行的问题备忘

背景昨天向公司申请了一台台式机办公用。虽然平时大多数人(所有人?)的办公电脑都是人走机不关。但自诩良好公民的我,还是要自觉一点。但想想每天下班都要来一遍关机操作很麻烦,就想写个关机批处理脚本然后设置定时任务。脚本很简单,就一句关机命令。可以确保脚本没问题,可是执行就出问题了。如果响应定时任务执行脚本会有一个cmd.exe黑色框一闪而过,然后就没有然后了。如果手动运行脚本,就会出现一个cmd.ex...

2019-11-02 09:24:07 698

Xftp-7个人免费版.rar

Xftp-7个人免费版.rar

2021-11-21

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

TA关注的人

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