如何用 Python 做自动化测试

2023-05-16


本文来自作者 Vant  GitChat 上分享 「如何用 Python 做自动化测试」

编辑 | 哈比

一、Selenium 环境部署

1. window 环境部署

1.1 当前环境

Win10 64 位系统;Python3.6.2(官方已经更新到了 3.6.4)

官方下载地址:https://www.python.org/downloads

Selenium 3.4.3;谷歌 59。

1.2 Python3 安装部署

Python 的安装接触编程语言中很简单的语言了。不需要繁琐的 JDK,也不需要 SDK。直接到官网下载,配置环境就成功了。

首先到官网下载我们需要的 Python3 版本:

点进去直接下载:

1.3 配置环境变量

安装好之后,我们就可以在文件夹看到我们下载好的 Python 文件了。

路径为: D:\python3.6.2。

现在我们去配置环境变量吧。

回到桌面,同时按下 WIN+R 键,打开 “运行” 对话框,输入 sysdm.cpl,单击 “确定” 按钮:

选择 “高级” 选项卡:

编辑当前路径:

到这里,我们配置环境就已经完成了,但是还是需要验证我们是否成功安装的。按 WIN+R,打开 “运行” 对话框,我们输入 cmd:

输入 python:

显示版本信息就证明已经部署成功了,接下来我们就可以开始学习 python 了。

1.4 安装 Selenium

现在我们就可以直接安装 Selenium 了,重新打开 cmd 窗口,输入:pip  查看是否存在 pip 命令:

如果不存在首先检查自己的环境变量是否配置正确了;第二检查 Python 文件夹下的 Scripts 文件夹下是否有 pip.exe 这个文件;如果这两步都没问题,就重新下载 python 文件。因为 pip 这个命令对我们来说是非常重要的。

接下来我们安装 Selenium,在 cmd 窗口中输入:pip install selenium:

1.5 驱动下载

这个是很多新手都会碰到的问题。其实也不用担心,因为 Selenium 驱动对不同版本的浏览器也是不一样的,所以很多人都会遇到这个问题了。

当前我使用的浏览器是谷歌浏览器。单击这里下载谷歌浏览器驱动。如果使用的火狐浏览器的,就需要先将浏览器版本降级了,所以我不推荐使用火狐浏览器。

我们进去选择自己浏览器对应版本的驱动下载吧:

上面两个驱动都是对谷歌 59 兼容的,下载完之后,我们将下载的文件放在 Python 的根目录下就可以了。

接下来测试自己的 Selenium 是否可以启动浏览器了,在 cmd 中输入 Python:

然后输入 from selenium import webdriver webdriver.Charome()

看到启动浏览器,我们就已经成功安装 Selenium 了 。

1.6  Pycharm 安装

官方下载地址请单击这里

安装完之后,我们需要输入注册码:选择 license,输入 http://idea.lanyus.com/ 这个地址,点击 OK 就可以了。如果没有输入,也不用担心,进入 pycharm 之后,点击 Help-Register- 选择 license:

这样也是可以的。现在我们已经把前面所需要的条件都完成了。

选择我们存放的路径和项目命名:

我们重温编程语言经典的输出:

我们可以点击上面的 Run 或者使用快捷键 Shift+Ctrl+F10 可以直接看到结果了:

看到的结果,我们就成功了:

二、Selenium 的定位元素操作

我们在网上看到的很多方法,都是使用 Firefox 中的插件 firebug 工具对元素进行定位的,但是现在 Firefox 已经不再对 firebug 进行维护了,也就是 firebug 也即将需要从市场淘汰出去了。

所以,我们会在这里使用的是谷歌的页面定位的,其实也就很简单的事。我们通过在页面中按 F12 查看页面就的元素,找到我们需要的元素,点击右击就可以看到我们需要定位的操作了。

Selenium 给我们提供了 8 种的定位元素方法,我们拿百度首页作为例子。

2.1 find_element_by_id()

我们可以直接通过英文意思理解这个方法,通过 ID 查找元素,也就是使用页面里的 id 属性:id = “”。我们先定位百度搜索框,在搜索框里面输入我们要查找的内容。

2.2 find_element_by_name()

这个定位的方法是通过查找名字的方式,对元素进行定位。我们在检查元素的时候看到 name=””,就可以使用这个方法了。

2.3 find_elements_by_class_name()

这个定位的方法是通过查找 class_name 的方式对元素进行定位,在检查元素的时候看到 class=””,就可以使用这个方法了。

2.4 find_element_by_tag_name()

这个定位的方法是通过元素的标签属性对元素进行定位,在检查元素的时候查看元素的最前面的 input,但是这个定位方式有个不好的地方在于很多页面都有同样的标签存在,所以我们定位的时候会很麻烦。

所以,这个方法我们不推荐使用。这个方法也是仅供参考。

实际上是会报错的,因为 selenium 在定位的时候不清楚我们要找的是哪个元素。

我们如果一定要用这个方法的话,我们就需要清楚,我们定位的标签的精准位置了。

2.5 find_element_by_link_text()

这个定位方式是通过查找页面的文本信息进行定位。也就是我们看到页面的信息去定位,例如:我们需要定位百度首页的登录按钮,并点击它。

2.6 find_element_by_partial_link_text()

这个方法的定位方式就是通过模糊文本信息查找元素,有些时候,我们希望定位到一个文本比较长的元素时,我们就可以通过这个方法去定位。

例如:定位百度首页页脚下的 “使用百度前必读”,我们是输入 “使用”。

这样我们也是可以定位到该元素的。

2.7 find_element_by_xpath()

最后来说两种最常用的定位方法,xpath 元素定位:通过查找元素的路径去查找元素。

这两个方法在使用上目前很广泛,也很多人推荐使用的方法。这两个很方便,因为浏览器已经帮我们做好准备了,我们只需要复制粘贴就可以了。

我们继续定位搜索框。

这样我们直接复制 xpath 路径就可以了,这样就可以解决我们会输入错误元素的问题(注:在使用 xpath 的时候,最外面的双引号改成单引号)

2.8 find_element_by_css_selector()

css 在操作上跟 xpath 差不多,也是通过复制粘贴的方式进行定位,不同在于 css 方法通过对页面中的 css 元素定位的。

三 、Autolt 的应用

3.1 Autolt3 下载安装

AutoIt 目前最新是 v3 版本,这是一个使用类似 BASIC 脚本语言的免费软件 , 它设计用于 Windows GUI(图形用户界面) 中进行自动化操作。

它利用模拟键盘按键,鼠标移动和窗口 / 控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的

官方下载:https://www.autoitscript.com/site/autoit/downloads。

点击下载

点击 next

点击 I Agree

选择安装 64 位或者 32 位,我这里选择安装的是 64 位的 Autolt,点击 next

点击 next

点击 next

选择安装的路径,点击 install

这里的 √ 去掉,点击 finish,这样就已经完成了。

3.2 Autolt3 使用

现在就来试试怎样去操作,去到” 开始” 菜单。

我们可以看到 Autolt 有以下文件,我们主要来看三个文件:Autolt Window Info(x64)、Compile Script to .exe(x64)、SciTE Script Editor。

第一个文件是用来录制我们操作的步骤,第二个文件是将我们的 .au 文件转换成我们最终的 .exe 文件,第三个是编辑我们 .au 文件。这样一来,我们就基本了解 Autolt 的使用流程了。

3.3  Autolt3 文件操作

首先我们需要打开 Autolt Window Info(x64) 这个文件:

在 pycharm 里创建一个命名为 “upload” 的 HTML 文件,


   <!DOCTYPE html>    <html lang="en">    <head>    <meta charset="UTF-8">    <title>upload_Title</title>    <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />    </head>    <body>    <div class="row-fluid">    <div class="span6 well">    <h3>upload_file</h3>    <input type="file" name="file" />    </div>    </div>    </body>    <script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>    </html>

将这段代码复制粘贴,然后打开:

点击选择文件,会打开一个窗口:

现在我们使用 autolt 工具来定位窗口的位置,拖动圆点:

将移动到的位置的信息记录下来,点击 Control 可以看到信息窗口的 title 为 “打开”,标题的 Class 为 “#32770”。

文件名输入框的 class 为 “Edit”,Instance 为 “1” ,所以 ClassnameNN 为 “Edit1”。打开按钮的 class 为 “Button”,Instance 为 “1” ,所以 ClassnameNN 为 “Button1”。

这样我们就可以编辑脚本信息了,打开 SciTE Script Editor 编辑脚本信息


   ;ControlFocus("title","text",controlID) Edit1=Edit instance 1    ControlFocus(" 打开 ", "","Edit1")    ; Wait 10 seconds for the Upload window to appear    WinWait("[CLASS:#32770]","",10)    ; Set the File name text on the Edit field    ControlSetText(" 打开 ", "", "Edit1", " E:\\ upload.txt")    Sleep(2000)    ; Click on the Open button    ControlClick(" 打开 ", "","Button1");

这样的脚本有一个问题就是,我们的脚本路径已经写死了,这样对于我们后期的自动化测试是行不通的。

所以我们必须将写死的路径改活。我们将 upload.txt 文件放在我们的自动化测试脚本里面。

我们再去修改我们脚本的路径 ControlSetText(“ 打开 “, “”, “Edit1”, @WorkingDir & “ \file\upload.txt”)。

这段代码的意思就是,打开当前文件夹上一个文件的相对路径,这样就可以防止我们的代码写死了。

这样我们就编辑好了脚本信息了,保存我们的文件,会生成 .au 的文件,但是这个文件不是我们想要的,我们要得到的是 .exe 的文件,打开 Compile Script to .exe(x64) 文件,将 .au 的文件转换成 .exe 文件就可以了。

点击 Convert 就 ok 了,在当前文件夹下我们就可以看到生成的 .exe 文件了。

具体文件都放在这里了。现在我们就可以去调用 upload.exe 文件了,新建命名为 uploadfile 的 python 文件。


   from selenium import webdriver    import os    driver = webdriver.Chrome()    #打开上传功能页面    file_path =  'file:///' + os.path.abspath('upload.html')    driver.get(file_path)    #点击打开上传窗口    driver.find_element_by_name("file").click()    #调用 upfile.exe 上传程序    os.system(os.path.abspath('upload.exe'))    driver.quit()

将这段代码输入进去,就可以调用了。这样一来,我们的 Autolt 学习就完成了。更多的 Autolt 语法,可以去官网看详细的文档。

四、自动化测试框架的设计架构

五、Docker for Jenkins

扫描下方二维码,阅读全文和「读者圈」交流

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 Python 做自动化测试 的相关文章

  • web项目异常A web application registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister

    异常 xff1a A web application registered the JBDC driver com mysql jdbc Driver but failed to unregister it when the web app
  • @Controller和@RestController的区别?

    64 Controller和 64 RestController的区别 xff1f 官方文档 xff1a 64 RestController is a stereotype annotation that combines 64 Respo
  • get方式传值中文乱码

    如下情况 xff1a lt a id 61 span class hljs string 34 bookname 34 span title 61 span class hljs string 34 span class hljs vari
  • Zabbix 5.4 server安装后的相关操作

    通过前面的安装 xff0c 相信大家已经能够正常登录zabbix server的管理页面了 在进行正式的使用之前 xff0c 建议大家最好把下面这个管理页面中左侧的操作树中的每一项功能都打开看看 xff0c 这样心中对zabbix serv
  • Maven搭建的SSM项目中遇到的问题

    Maven搭建的SSM项目中遇到的问题 1 EL表达式失效 2 装配异常Unable to configure ssm 解决办法 其实这两个问题的出现都是因为servlet版本和java版本不合适造成的 xff0c EL表达式在servle
  • Java小工具Lombok的安装与使用

    1 Lombok简介 Lombok是一个代码生成器 xff0c 可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具 xff0c 通过使用对应的注解 xff0c 可以在编译源码的时候生成对应的方法 使用 lom
  • 日常记录(1)

    数据库连接池Druid Alibaba github地址 xff1a https github com alibaba druidBlog xff1a http blog csdn net pk490525 article details
  • vnc 设置自定义分辨率

    1 vnc设置分辨率 vncserver geometry 1600x900即可 xff0c 之后通过window下vnc连接后的ubuntu分辨率即为1600x900了 注意这里的X是小写的x而不是 2 但是 xff0c 登录后 xff0
  • 解决Vcenter Client启动Fault Tolerance辅助虚拟机被禁用保护的问题

    解决FT辅助虚拟机被禁用的问题 项目场景 xff1a 学习虚拟机中问题描述 xff1a 辅助虚拟机被禁用原因分析 xff1a 解决方案与结论 项目场景 xff1a 学习虚拟机中 最近这个学期在学习虚拟化技术 xff0c 由于课程是新开的 x
  • kali的重复登录与vnc灰屏

    云安全 xff08 二 xff09 VNC连接的一些小问题 文章目录 云安全 xff08 二 xff09 VNC连接的一些小问题 前言 xff1a 问题重现一 解决灰屏问题二 普通用户循环登录1 原因2 解决方法 三 原因分析四 总结五 项
  • sql注入闯关笔记【Less-1】基于错误的GET单引号字符型注入

    云安全之sql注入 xff08 sqli labs Less 1 文章目录 云安全之sql注入 xff08 sqli labs Less 1 前言一 闯关一 测试注入点二 手工注入三 sqlmap注入 二 总结三 思路与解惑 前言 这学期学
  • 写一个简单的爬虫,可直接复制学习!!

    简单爬虫直面代码 xff0c 可直接复制学习 这个代码的作用主要是用来获取到百度首页的数据 xff0c 只用来供理解学习 真 小白 福利 todo 首先导包requests 用于爬取数据 import requests todo 定义你要爬
  • 教你如何开发VR游戏系列教程五:UI 交互

    原文链接 xff1a 欢迎关注AR学院 上一篇介绍了ugui NGUI 以及普通3D模型的UI设计 这一讲主要介绍怎么样利用这些UI做交互 大家在VR游戏看到的UI以及UI交互 xff0c 主要有哪几种 xff1f 1 头控悬停 xff08
  • C/C++斐波那契数全解(哪种方法更好?)

    目录 一 递归思想 二 空间换时间 三 动态规划 四 通项公式 五 矩阵快速幂 六 总结 本文章参考leetcode斐波那契数官方题解 斐波那契的边界条件是 F 0 61 0 和 F 1 61 1 当 n gt 1 时 xff0c 每一项的
  • Zabbix 5.4客户端安装

    通过前面的操作 xff0c 相信大家的zabbix server已经能够正常的运行起来了 xff0c 但是仅有zabbix server是不完整的 xff0c server的目标是监控其他的主机 xff0c 而并非只监控自身 xff0c 所
  • Linux中kill -2、kill -9等区别 && kill signal汇总

    xfeff xfeff kill号令用于终止指定的过程 xff08 terminate a process xff09 xff0c 是Unix Linux下过程经管的常用号令 凡是 xff0c 我们在须要终止某个或某些过程时 xff0c 先
  • Linux下查找文件(find、grep命令)

    目录 一 find命令 1 按文件名 2 按文件类型查询 3 按照文件大小查找 4 按照文件日期查找 4 1按照创建日期查找 4 2按照修改日期查找 4 3按照访问日期查找 5 按深度查找 5 1查找起始点以下n层的目录 xff0c 不超过
  • 深度剖析数据在内存中的存储

    小编认为要想成为一个好的程序员 xff0c 不能仅仅只做到会使用 xff0c 而要做到理解其本质 做到可持续发展 接下来小编会向大家介绍数据在内存中究竟是如何存储与运算的 xff0c 也算是修炼内功了吧 目录 一 数据类型介绍 1 整型家族
  • Linux下进程控制详解

    目录 一 进程创建 1 1 初识fork 1 2 函数返回值 1 3 写时拷贝技术 1 4 fork函数的使用场景 1 5 fork函数的失败原因 二 进程终止 2 1 进程退出场景 2 2 进程退出码 2 3 进程正常退出方法 2 3 1
  • 基础IO详解

    目录 一 系统文件IO 1 1 open 1 1 1 open的第一个参数 1 1 2 open的第二个参数 1 1 3 open的第三个参数 1 1 4 open的返回值 1 2 close 1 3 write 1 4 read 二 文件

随机推荐

  • HTTPS协议

    一 HTTPS介绍 HTTPS是 个应用层协议 xff0c 是在HTTP协议的基础上引入了加密层 HTTP协议内容都是按照文本的方式明文传输 xff0c 这就导致在传输过程中可能出现被篡改的情况 二 加密 2 1 加密概念 加密就是把明文
  • 传输层 — UDP协议

    目录 一 传输层 1 1 端口号 1 2 关于端口的常见问题 1 3 netstat amp amp pidof 二 UDP协议 2 1 UDP协议格式 2 2 UDP协议特点 2 3 UDP缓冲区 2 4 基于UDP的应用层协议 一 传输
  • 传输层——TCP协议

    目录 一 初步认识 二 TCP协议格式 2 1 初识协议格式 2 2 序号与确认序号 2 3 16位窗口大小 2 4 六个标志位 三 确认应答机制 四 超时重传机制 五 连接管理机制 5 1 三次挥手 5 2 四次挥手 六 流量控制 七 滑
  • Android 8.1 App开机自启动、注册为无障碍服务、实现悬浮窗

    xff08 欢迎转载 xff0c 只需注明本文来源 xff1a https blog csdn net actionwind article details 103619688 xff09 以下各方法大多来自于网上诸多朋友的无私分享 xff
  • 安卓的ATV系统

    Android系统根据是否需要认证分为AOSP系统和ATV系统 AOSP Android开源系统 xff0c 全称为Android Open Source Project ATV 产品依照 Android TV 制式标准提供统一的操作体验
  • ubuntu18 为什么安装的时候选择自动登陆,但是还是不能自动登陆呢

    2019 03 12 16 16 1 点击右上角的向下三角形 2 在出现的对话框里面 xff0c 点击右下角的扳手图标 3 点击 隐私 gt 锁屏 4 自动锁屏 L xff0c 保持不变 5 黑屏至锁屏的等的时间 A 改为 30分钟 6 显
  • zabbix 5.4 添加监控主机

    现在我们已经有了一个客户端主机了 xff0c 接下来我们要在zabbix server管理页面添加这台主机 xff0c 让server对agent进行监控 登录zabbix server的管理页面 xff0c 点击左侧操作树的配置选项 xf
  • (转载)环形缓冲区的实现原理(ring buffer)

    环形缓冲区的实现原理 xff08 ring buffer xff09 在通信程序中 xff0c 经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据 环形缓冲区是一个先进先出的循环缓冲区 xff0c 可以向通信程序提供对缓冲区的互斥访
  • 力扣295. 数据流的中位数

    中位数是有序列表中间的数 如果列表长度是偶数 xff0c 中位数则是中间两个数的平均值 例如 xff0c 2 3 4 的中位数是 3 2 3 的中位数是 2 43 3 2 61 2 5 设计一个支持以下两种操作的数据结构 xff1a voi
  • virt-manager cannot open display问题

    1 首先查看本机sshd是否开启X11转发 grep X11Forwarding etc ssh sshd config X11Forwarding yes X11Forwarding no 2 检查xorg x11是否安装 rpm qa
  • 2023RSAC创新沙盒大赛十强公布,软件供应链与开源软件安全再成焦点

    近日 xff0c 2023RSAC大会公布了第18届RSAC创新沙盒竞赛的决赛 十强企业 软件安全企业Endor Labs成功入围 xff0c 软件供应链安全和开源安全问题再次成为国际焦点 Endor Labs提供了一个可依赖的生命周期管理
  • 如何找到现有研发体系的「内耗问题」?| 谈效风生

    第3期 xff1a 如何找到现有研发体系的 内耗问题 xff1f 在上一期 谈到提升效能 xff0c 我们应该如何下手 xff1f 我们聊到开始做研发效能的四个要点 xff1a 评估现有流程 引入自动化工具 建立度量指标 持续改进 本期就围
  • 「自动化」聊起来简单,做起来难 | 谈效风生

    第4期 xff1a 自动化 聊起来简单 xff0c 做起来难 在上一期 如何找到现有研发体系的 内耗问题 中 xff0c 我们聊了评估现有研发体系 xff0c 正确的找到 体系内耗问题 xff0c 是改变研发体系的第一步 本期我们继续聊下一
  • GitChat·前端 | 从软件工程角度看大前端技术栈

    GitChat 作者 xff1a 韩亦乐 前言 我们都知道 xff0c 大学几乎是没有 Web 前端课的 以我所在的大学为例 xff0c 唯一引导我们了解 JavaScript 的也只是 人机界面 和 Web应用开发 选修课 再者 xff0
  • 当我说要做大数据工程师时他们都笑我,直到三个月后……

    作者 xff1a Fickr孫啟誠 原文 xff1a 三个月大数据研发学习计划实战解析 关注微信公众号 xff1a GitChat 技术杂谈 一本正经的讲技术 不要错过文末彩蛋 申明 xff1a 本文旨在为普通程序员 xff08 Java程
  • 带你从零开始,快速学会 Matlab GUI

    本文来自作者 木木小迷哥 在 GitChat 上分享 Matlab GUI 零基础学员快速入门 xff0c 阅读原文 查看交流实录 文末高能 编辑 洛肯 Matlab广泛地应用于数学分析 计算 自动控制 系统仿真 数字信号处理 图像处理 数
  • 修改订单金额!?0.01 元购买 iPhoneX?| Web谈逻辑漏洞

    本文来自作者 肖志华 在 GitChat 上分享 Web 安全恩仇录 xff1a 再谈逻辑漏洞 xff0c 阅读原文 查看交流实录 文末高能 编辑 哈比 Web 漏洞里有 SQL 注入 XSS 等漏洞 xff0c 但是逻辑漏洞等问题也是一个
  • zabbix 5.4 配置Email报警媒介

    我们使用zabbix主要的目标就是实现运维的自动化 xff0c 当被监控的系统出现问题时zabbix能够自动的提示我们 xff0c 要实现这个功能就必需设置报警媒介 本文带领大家配置一个Email报警媒介 我们使用zabbix主要的目标就是
  • 如何开发一款游戏:游戏开发流程及所需工具

    本文来自作者 goto先生 在 GitChat 上分享 如何开发一款游戏 xff1a 游戏开发流程及所需工具 编辑 哈比 游戏作为娱乐生活的一个方面 xff0c 参与其中的人越来越多 xff0c 而大部分参与其中的人都是以玩家的身份 他们热
  • 如何用 Python 做自动化测试

    本文来自作者 Vant 在 GitChat 上分享 如何用 Python 做自动化测试 编辑 哈比 一 Selenium 环境部署 1 window 环境部署 1 1 当前环境 Win10 64 位系统 xff1b Python3 6 2