最近斗哥在朋友的影响下,接触了自动化测试工具中的一个项目: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

# -*-coding:utf-8-*-

from selenium import webdriver

driver=webdriver.Firefox()

# 打开火狐浏览器空白窗体

driver.get('https://www.baidu.com')

# 启动浏览器并且导航到指定URL

driver.close()

# 关闭浏览器

此时已经控制浏览器,并且自动访问百度。

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

通过id定位元素:

find_element_by_id(self, id_)

find_elements_by_id(self, id_)  返回list

通过class定位元素:

find_element_by_class_name(self, name)

find_elements_by_class_name(self, name)  返回list

通过name属性定位元素:

find_element_by_name(self, name)

find_elements_by_name(self, name)  返回list

通过标签名定位元素:

find_element_by_tag_name(self, name)

find_elements_by_tag_name(self, name)  返回list

通过链接文本定位元素:

find_element_by_link_text(self, link_text) 完全匹配

find_element_by_partial_link_text(self, link_text) 部分匹配

通过xpath定位元素:

find_element_by_xpath(self, xpath)

find_elements_by_xpath(self, xpath) 返回list

通过css选择器定位元素:

find_element_by_css_selector(self, css_selector)

find_elements_by_css_selector(self, css_selector) 返回list

先使用浏览器的开发者模式,或者用Firebug等插件,确定元素位置属性,再用脚本实现。
确定了百度的输入框位置。

就可以用方法对定位元素的位置。如:driver.find_element_by_id('kw')

0x05 Selenium 元素操作

定位完就可以对元素做操作,鼠标点击,输入文本。

1

2

3

4

5

6

7

clear(self)  清除文本输入框

click(self)  点击元素

submit(self)  提交表单

send_keys(self*value)  发送信息

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

from selenium import webdriver

import time

from selenium.webdriver.common.keys import Keys

driver=webdriver.Firefox()

driver.get('https://www.baidu.com')

driver.find_element_by_id('kw').send_keys('python')

#输入

driver.find_element_by_id('kw').send_keys(Keys.ENTER)

#回车

如果运行正常,将会自动执行以下操作:打开一个火狐浏览器,然后打开百度首页,在输入框中输入“python”然后回车。

0x06 小小总结

本期的内容就介绍到这里啦!下期将带来appium测试工具的使用,以及appium测试微信小程序的相关介绍。不见不散

打个响指Selenium自动化开启的更多相关文章

  1. Selenium自动化面试题

    (1)selenium的工作原理?        ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...

  2. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  3. 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 ...

  4. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  5. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  6. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

  7. Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

    通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...

  8. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  9. Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)

    前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域 ...

随机推荐

  1. 初识C语言 (四)

    分支结构 if语句 C语言中的分支结构语句中的if条件语句,简单if语句的基本结构如下: 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句. 其过程可表示为下图 实例: if(resu ...

  2. 微服务杂谈--EureKa及自我保护

    时值初夏,各位老官的心也有所悸动,这不,众看官搬好小板凳,沏一壶清茶,待听Jerry话谈Eureka,以此静心.话不多少,且听: 一.微服务的产生 单体应用:一个jar或者一个war包交给运维,运行在 ...

  3. Scyther 论文相关资料整理

    1.Scyther 的特点使用方法 Scyther可以提供轨迹的简单描述,方便分析协议可能出现的攻击和表现,使用Athena算法,该软件表现如下特点: 该软件有明确的终止,能工提供无限会话协议安全性的 ...

  4. git clone下载代码

    下载master代码git clone http://username:password@git.wondershare.cn/XXX.git 下载指定develop分支代码git clone -b ...

  5. 末学者笔记--NFS服务和DHCP服务讲解

    NFS服务端概述 一.概念: NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS:NFS允许一个系统在网络上与他 ...

  6. C#如何实现DataGridView单元格拖拽

    参考: http://www.cnblogs.com/michaelxu/archive/2009/09/27/1574905.html

  7. canvas20181114

    1. canvas 描边.填充.画线.闭合路径.非零环绕原则 <!DOCTYPE html> <html lang="en"> <head> & ...

  8. js原型与原型链探究

    原型有一个非常重要的属性叫 prototype 一.先写一个简单的例子,看看 A的原型和A的实例 分别是什么 function A() {} var a = new A() console.log(a ...

  9. 「LibreOJ Round #9」CommonAnts 的调和数

    题解: 对于subtask3:可以把相同的归在一起就是$nlogn$的了 对于subtask4: 可以使用高维前缀和的技术,具体的就是把每个质因数看作一维空间 那么时间复杂度是$\sum \limit ...

  10. 编写一份好的 Vimrc

    编写一份好的 Vimrc 目录 如何 Vimrc 色彩 空白字符与制表符 UI 配置 搜索 折叠 移动 用户自定义的前缀快捷按键 插件CtrlP 启动配置 终端Tmux 自动命令及其分组 备份 自定义 ...