打个响指Selenium自动化开启
最近斗哥在朋友的影响下,接触了自动化测试工具中的一个项目:appium自动化测试脚本。
appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,所以在讲appium类前先了解下Selenium自动化测试的使用。
其实功能测试自动化跟爬虫一样 ,都是要进行元素定位与操作,所以Selenium可以用来爬取数据。
0x00 Selenium简述
Selenium 是一个用于Web应用程序测试的工具。提供了一系列简单的API,让我们使用Selenium WebDriver调用 WebDriver的所有功能,Selenium可以直接操作浏览器,就像真正的用户在操作一样。
0x01 Selenium 环境准备
一、语言选择
Selenium 支持多种语言开发,如Java、Python、Ruby、PHP、C#、JavaScript等。
斗哥这里选择Python。
python官网(https://www.python.org/)下载对应系统安装包,python2版本与python3版本都支持Selenium
安装步骤斗哥这里就不介绍,安装完成后在终端输入python看到python的安装的版本信息。则安装成功(未发现命令可能要手动添加安装位置的环境变量)。
![]()
二、浏览器选择
Selenium支持与多种浏览器交互,如Chrome、Firefox、Edge、Safari等
除了火狐浏览器原生支持以外,Selenium 要通过浏览器驱动来与浏览器交互。
Chrome:
https://sites.google.com/a/chromium.org/chromedriver/downloads
下载Chrome驱动需要梯子,无法下载可以在下方留言浏览器驱动
Edge:
https://developer.microsoft.com/ ... dge/tools/webdriver
Safari:
https://webkit.org/blog/6900/webdriver-support-in-safari-10
以Chrome为例,下载时都是32位的驱动这个不用在意,下载对应的Chrome版本就行。
![]()
![]()
下载完,将这个exe的路径加入环境变量, 就可以根据驱动连接浏览器。
![]()
新手推荐火狐浏览器,不需要驱动。
三、 Selenium安装
windows的python安装包已经集成了pip可以直接使用
命令:pip install selenium
下载时指定版本为3.14.1。
![]()
0x03 Selenium 快速入门
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 |
|
此时已经控制浏览器,并且自动访问百度。
![]()
0x04 Selenium 元素定位
当我们要访问页面某个功能,某个标签,就需要在界面找到这些元素。selenium中有一系列以find_开头的方法,都是用于元素定位。
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
先使用浏览器的开发者模式,或者用Firebug等插件,确定元素位置属性,再用脚本实现。
确定了百度的输入框位置。
![]()
就可以用方法对定位元素的位置。如:driver.find_element_by_id('kw')
0x05 Selenium 元素操作
定位完就可以对元素做操作,鼠标点击,输入文本。
|
1 2 3 4 5 6 7 |
|
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 |
|
如果运行正常,将会自动执行以下操作:打开一个火狐浏览器,然后打开百度首页,在输入框中输入“python”然后回车。

0x06 小小总结
本期的内容就介绍到这里啦!下期将带来appium测试工具的使用,以及appium测试微信小程序的相关介绍。不见不散
打个响指Selenium自动化开启的更多相关文章
- Selenium自动化面试题
(1)selenium的工作原理? ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Python2.6.6执行selenium自动化
系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...
- Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景 在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...
- Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...
- Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)
在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...
- Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)
通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...
- Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)
前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域 ...
随机推荐
- 卢卡斯定理——应用hdu4349
#include<bits/stdc++.h> using namespace std; int n; int main(){ while(cin>>n){ ; while(n ...
- 洛谷 P1414 又是毕业季II
题目链接 https://www.luogu.org/problemnew/show/P1414 题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离 ...
- 使用Nginx+Lua实现waf
使用Nginx+Lua实现waf 技术内容来自:https://github.com/loveshell/ngx_lua_waf 软件包需求: 1 .Nginx兼容性[最后测试到1.13.6] [ro ...
- mysql函数取出单个字段重新组成一维数组
array_column():
- Linux 安装qt5-designer并集成到Pycharm
在前面,有过介绍 Pycharm集成pyrcc4 =====>链接: Pyqt 打包资源文件 这个是在Windows下集成,且pyqt在Windows下一个双击exe搞定. 在pyqt5之前 ...
- 分红包算法Java实现
需要考虑几个点: 红包形成的队列不应该是从小到大或者从大到小,需要有大小的随机性. 红包这种金钱类的需要用Decimal保证精确度. 考虑红包分到每个人手上的最小的最大的情况. 下面是利用线段分割算法 ...
- springboot引用dubbo的方式
1.以此种接口依赖的方式 这种相当于将其他模块的服务先拿过来dubbo自己在本模块中进行注入,此时可以直接用Spring的@Autowired注解引用 ,这种情况下本模块的扫描dubbo是所引用的模块 ...
- Hadoop的数据压缩
一.Hadoop的数据压缩 1.概述 在进行MR程序的过程中,在Mapper和Reducer端会发生大量的数据传输和磁盘IO,如果在这个过程中对数据进行压缩处理,可以有效的减少底层存储(HDFS)读写 ...
- python3中列表、元组、字典的增删改查说明详解
python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之 ...
- 解决Spring boot中读取属性配置文件出现中文乱码的问题
问题描述: 在配置文件application.properties中写了 server.port=8081 server.servlet.context-path=/boy name=张三 age=2 ...