使用pyautogui替代selenium,图像识别进行web自动化测试--基于python语言
这里演示一下使用pyautogui替代selenium进行web自动化测试,并不建议使用pyautogui进行web自动化测试,因为元素的ui一旦有长宽变化,或者风格的变化,执行时就会发生异常,仅当学习使用
以使用selenium打开百度,并在输入框输入“只宅不技术”,之后点击搜索为例
代码如下:
#coding=utf-8
from selenium import webdriver
import time
#打开火狐浏览器
driver=webdriver.Firefox()
#打开百度
driver.get("https://www.baidu.com")
time.sleep(2)
#找到输入框输入 只宅不技术
driver.find_element_by_id("kw").send_keys(u'只宅不技术')
#点击搜索框
driver.find_element_by_id("su").click()

若要使用pyautogui替代selenium,需要先进行截图,然后通过图像识别操作
首先需要利用截图工具进行截图,比如QQ就可以进行截图,需要截的图片有
1、火狐浏览器的图标
,将其命名为firefox.png
2、输入url的地址框
,将其命名为url.png
3、进行搜索的输入框
,将其命名为kw.png
4、进行搜索的搜索按钮
,将其命名为su.png
由于typewrite()函数无法输入中文,所以事先把“只宅不技术”复制到了粘贴板,输入时候粘贴一下就行,将截图与代码放置在同一路径下【需要注意,整个屏幕上只能有一个火狐的图标,不然会报错】

代码如下:
import pyautogui
import time #定义图像识别双击事件
def mouseDoubleClick(image):
x,y=pyautogui.locateCenterOnScreen(image)
pyautogui.click(x,y,clicks=2,interval=0.2,duration=0.2,button='left') #定义单击事件
def mouseClick(image):
x,y=pyautogui.locateCenterOnScreen(image)
pyautogui.click(x,y,clicks=1,interval=0.2,duration=0.2,button='left') #双击火狐浏览器的图标
mouseDoubleClick(image='firefox.png')
time.sleep(3)
#双击浏览器的url地址框
mouseClick(image='url.png')
#在地址框输入百度地址,然后回车
pyautogui.typewrite('www.baidu.com')
pyautogui.keyDown('enter')
pyautogui.keyUp('enter')
time.sleep(2)
#双击搜索框
mouseClick(image='kw.png')
#将只宅不技术粘贴到搜索框
pyautogui.hotkey('ctrl','v')
time.sleep(2)
#点击搜索
mouseClick(image='su.png')

使用pyautogui替代selenium,图像识别进行web自动化测试--基于python语言的更多相关文章
- 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
前 言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...
- 关于《Web接口开发与自动化测试--基于Python语言》
关于封面logo 首先,你会被书封上面logo吸引,这么炫酷?双蛇杖?嗯,这是Requests的新logo. 旧的logo是一只乌龟. 新logo是双蛇杖: 看到新logo我首先想到的是 火爆全网页游 ...
- 《Web接口开发与自动化测试 -- 基于Python语言》---现已出版。
终于可以购买了!! 有需要的同学通过下面链接购买. 购买来链接: https://item.jd.com/11806319423.html 为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化 ...
- 《Selenium 2自动化测试实战 基于Python语言》中发送最新邮件无内容问题的解决方法
虫师的<Selenium 2自动化测试实战 基于Python语言>是我自动化测试的启蒙书 也是我推荐的自动化测试入门必备书,但是书中有一处明显的错误,会误导很多读者,这处错误就是第8章自动 ...
- selenium2自动化测试实战--基于Python语言
自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...
- 《Selenium2自动化测试实战--基于Python语言》 --即将面市
发展历程: <selenium_webdriver(python)第一版> 将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...
- 关于《Selenium3自动化测试实战--基于python语言》
2016年1月,机缘巧合下我出版了<Selenium2自动化测试实战--基于python语言>这本书,当时写书的原因是,大部分讲Selenium的书并不讲编程语言和单元测试框,如果想在项目 ...
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉 ...
- 简单实现接口自动化测试(基于python+unittest)
简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...
随机推荐
- 021-制作OpenStack镜像官方文档
可参考官方文档:https://docs.openstack.org/image-guide/ 制作centos7 :https://docs.openstack.org/image-guide/ce ...
- PAT Basic 1010 一元多项式求导 (25 分)(活用stringstream,昨天学习的)
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...
- GUI学习之十四——QKeySequenceEdit学习总结
我们在前面总结了3种文本输入控件,这里有一种新的:QKeySequenceEdit,用作对快捷键的采集.结合其内部的API可以实现对自定义快捷键的设置.这节内容大致看一下就好了,我也不知道实际作用有哪 ...
- git log 详解 以及代码量统计
https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86% ...
- IO操作基本步骤
package com.study02; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundE ...
- 【JavaScript】包装类
包装类 String().Number().Boolean() String() 可以将基本数据类型的字符串转换为String对象 var string = new String("hell ...
- 你肯定不知道的oracle数据库和sql server的这些区别
它们两者之间的区别主要体现在六大方面: 一是开放性. 1.SQL Server 只可在windows上运行,缺乏开放性,操作系统的稳定对数据库是非常重要的. Windows9X系列产品比较偏重于桌面应 ...
- Nginx 作为代理服务与负载均衡
代理服务 代理一代为办理(代理理财.代理收货等等) 代理区别 区别在于代理的对象不一样 正向代理代理的对象是客户端 反向代理代理的对象是服务端 反向代理配置 server { listen 80; s ...
- BZOJ 4939: [Ynoi2016]掉进兔子洞(莫队+bitset)
传送门 解题思路 刚开始想到了莫队+\(bitset\)去维护信息,结果发现空间不太够..试了各种奇技淫巧都\(MLE\),最后\(\%\)了发题解发现似乎可以分段做..这道题做法具体来说就是开\(3 ...
- Python 字典dict操作定义
字典是用大括号{ }来表示,它是python中最灵活的内置数据类型.它是一个无序的集合,通过键来存取值,而不能用索引. 字典的创建和使用 字典的组成:字典是由大括号{ }来包含其数据的,大括号内包含 ...