1. selenium原理

1.1 selenium介绍

Selenium是一个Web应用的自动化框架。

通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面。 比如点击界面按钮,在文本框中输入文字 等操作。

而且还能从web界面获取信息。 比如获取12306票务信息,招聘网站职位信息,财经网站股票价格信息 等等,然后用程序进行分析处理。

Selenium 的自动化原理是这样的:

1.2 selenium客户端库

我们写的自动化程序需要使用客户端库。

我们程序的自动化请求都是通过这个库里面的编程接口发送给浏览器。

比如,我们要模拟用户点击界面按钮, 自动化程序里面就应该调用客户端库相应的函数,就会发送点击元素的请求给下方的浏览器驱动。然后,浏览器驱动再转发这个请求给浏览器。

这个自动化程序发送给浏览器驱动的请求是HTTP请求。

客户端库从哪里来的?是Selenium组织提供的。

Selenium组织提供了多种 编程语言的Selenium客户端库,包括 java,python,js,ruby等,方便不同编程语言的开发者使用。

我们只需要安装好客户端库,调用这些库,就可以发出自动化请求给浏览器咯。

1.3 浏览器驱动

浏览器驱动也是一个独立的程序,是由浏览器厂商提供的,不同的浏览器需要不同的浏览器驱动。 比如Chrome浏览器和火狐浏览器有各自不同的驱动程序。

浏览器驱动接收到我们的自动化程序发送的界面操作请求后,会转发请求给浏览器,让浏览器去执行对应的自动化操作。

浏览器执行完操作后,会将自动化的结果返回给浏览器驱动,浏览器驱动再通过HTTP响应的消息返回给我们的自动化程序的客户端库。

自动化程序的客户端库接收到响应后,将结果转化为数据对象返回给我们的代码。

我们的程序就可以知道这次自动化操作的结果如何了。

1.4 总结

  1. 自动化程序调用Selenium客户端库函数(比如点击按钮元素)。
  2. 客户端库会发送Selenium命令给浏览器的驱动程序。
  3. 浏览器驱动程序接收到命令后,驱动浏览器去执行命令。
  4. 浏览器执行命令。
  5. 浏览器驱动程序获取命令执行的结果,返回给我们自动化程序。
  6. 自动化程序对返回结果进行处理。

2. 安装selenium环境

Selenium环境的安装主要就是安装两样东西:客户端库和浏览器驱动。

2.1 安装客户端库

不同的编程语言选择不同的Selenium客户端库。

对应我们Python语言来说,Selenium客户端库的安装非常简单,用pip命令即可。

打开命令行程序,运行如下命令

  1. pip install selenium

2.2 安装浏览器驱动

浏览器驱动是和浏览器对应的。不同的浏览器需要选择不同的浏览器驱动。

目前主流的浏览器中,Chrome 浏览器对Selenium自动化的支持更加成熟一些。

我们就以Chrome浏览器为例。

建议安装最新版本的Chrome浏览器,点击这里下载

访问Chrome浏览器的驱动下载页面,点击这里下载

注意浏览器驱动必须要和浏览器版本匹配,下图红圈里面的版本号就是和浏览器版本号对应的 。

比如:当前Chrome浏览器版本是78, 就需要下载78开头的目录里面的驱动程序 。

打开目录,里面有3个zip包,分别对应Linux、Mac、Windows平台。

如果我们是Windows平台的电脑,就下载 chromedriver_win32.zip

这是个zip包,下载下来之后,解压里面的程序文件 chromedriver.exe 到某个目录下面,注意这个目录的路径最好是没有中文名和空格的。

比如,解压到E:\webdrivers目录下面。

也就是保证我们的Chrome浏览器驱动路径为E:\webdrivers\chromedriver.exe

基于selenium的web自动化环境搭建就是这些,比较简单。

3. 简单的使用

3.1 打开浏览器,进入指定网站

  1. from selenium import webdriver
  2.  
  3. # 创建 WebDriver 对象,指明使用chrome浏览器驱动
  4. wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
  5.  
  6. # 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
  7. wd.get('https://www.baidu.com')

注意,等号右边返回的是WebDriver类型的对象,我们可以通过这个对象来操控浏览器,比如打开网址、选择界面元素等。

而下面这行代码,就是使用WebDriver的get方法打开网址百度

  1. wd.get('https://www.baidu.com')

执行上面这行代码时,自动化程序就发起了打开百度网址的请求消息,通过浏览器驱动,给Chrome浏览器。

Chome浏览器接收到该请求后,就会打开百度网址,通过浏览器驱动,告诉自动化程序打开成功。

3.2 关闭浏览器

执行完自动化代码,如果想关闭浏览器窗口可以调用WebDriver对象的 quit 方法,像这样 wd.quit() 。

3.3 浏览器驱动目录加入环境变量Path

前面,我们的代码创建 WebDriver对象时,需要指定浏览器驱动路径,比如

  1. wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')

如果,我们把浏览器驱动所在目录加入环境变量 Path,再写代码时,就可以无需指定浏览器驱动路径了,像下面这样。

  1. wd = webdriver.Chrome()

因为,Selenium会自动在环境变量Path指定的那些目录里查找名为chromedriver.exe的文件。

一定要注意的是, 加入环境变量 Path 的,不是浏览器驱动全路径,比如E:\webdrivers\chromedriver.exe

而是浏览器驱动所在目录,比如E:\webdrivers\

Selenium(一):原理与安装、简单的使用的更多相关文章

  1. 【python+selenium的web自动化】- Selenium WebDriver原理及安装

    简单介绍 selenium ​ selenium是一个用于测试web网页的自动化测试工具,它直接运行在浏览器中,模拟用户的操作.

  2. DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

    DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS    DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...

  3. Selenium WebDriver原理(二):Selenium是如何操纵浏览器的?

    前言 上一篇文章<selenium webdriver 是怎么运行的>用了一个简单的例子--搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深 ...

  4. Selenium 工具介绍、安装、配置及使用

    概念 selenium是一款跨平台开源工具,用于web的功能完整性測试,想做压力測试的能够换软件了 先看一眼官方站 http://docs.seleniumhq.org/download/ 首先要FQ ...

  5. LVS实现负载均衡原理及安装配置

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  6. selenium工作原理详解

    selenium简介 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11), ...

  7. selenium介绍及环境安装

      selenium简介: seelenium是web应用程序自动化工具,通过自动操作浏览器,进行点击.输入.回车.返回等来模拟用户的真实行为.如何理解和看待selenium项目,selenium官方 ...

  8. LVS实现负载均衡原理及安装配置 负载均衡

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  9. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

随机推荐

  1. SVN重新定位操作流程

    因服务器其他系统需要SVN原来使用的443端口无法继续使用需要更换,服务器SVN端口已更新为8443,现将个人电脑SVN文件夹路径重新定位流程展示如下: 确定即修改成功!

  2. 3种骚操作,教你查看 Java 字节码!

    在我们工作.学习.以及研究 JVM 过程当中,不可避免的要查看 Java 字节码,通过查看字节码可以了解一个类的编译结果,也能通过编译器层面来分析一个类的性能. 字节码文件是不能直接打开的,下面栈长教 ...

  3. 设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示(1.准备工作)

    本案例适用于开发者入门理解Azure Functions/ IoT Hub / Service Bus / Power BI等几款产品. 主要实战的内容为: 将设备遥测数据上传到物联网中心, 将遥测数 ...

  4. Yii2 框架跑脚本时内存泄漏问题分析

    现象 在跑 edu_ocr_img 表的归档时,每跑几万个数据,都会报一次内存耗尽 PHP Fatal error:  Allowed memory size of 134217728 bytesex ...

  5. JS---案例:完整的轮播图---重点!

    案例:完整的轮播图 思路: 分5部分做 1. 获取所有要用的元素 2. 做小按钮,点击移动图标部分 3. 做右边焦点按钮,点击移动图片,小按钮颜色一起跟着变 (克隆了第一图到第六图,用索引liObj. ...

  6. iOS核心动画高级技巧 - 6

    11. 基于定时器的动画 基于定时器的动画 我可以指导你,但是你必须按照我说的做. -- 骇客帝国 在第10章“缓冲”中,我们研究了CAMediaTimingFunction,它是一个通过控制动画缓冲 ...

  7. 【原创】你的Redis怎么持久化的

    引言 (本文改编自生活真实案例,如有类同,绝不是巧合!) 端午节,烟哥正在一边愉快的学习.... 突然,微信一阵抖动.原来是老刘呼唤烟哥!善良的烟哥本以为人家是要约我出去玩!然而,打开微信一看,出现下 ...

  8. Java设计模式13:责任链模式

    前言 来菜鸟这个大家庭10个月了,总得来说比较融入了环境,同时在忙碌的工作中也深感技术积累不够,在优秀的人身边工作必须更加花时间去提升自己的技术能力.技术视野,所以开一个系列文章,标题就轻松一点叫做最 ...

  9. 关于Redis 二进制内容的 可视化尝试

    二进制内容的 能否可视化?  网上的资料比较少啊! -------------------------------------------------------------------------- ...

  10. C# Task TaskFactory 异步线程/异步任务

    Task是.NetFramework3.0出现的,线程是基于线程池,然后提供了丰富的API TaskFactory  提供对创建和计划 Task 对象的支持 创建和启动异步任务 1.Task task ...