Selenium简介

Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本(这里主要是针对selenium ide)

Selenium历程

04年,诞生了Selenium Core,Selenium Core是基于浏览器并且采用JavaScript编程语言的测试工具,运行在浏览器的安全沙箱中,设计理念是将待测试产品、Selenium Core和测试脚本均部署到同一台服务器上来完成自动化测试的工作。
05年,Selenium RC诞生,就是selenium1 ,这个时候,Selenium Core其实是Selenium RC的核心。
Selenium RC让待测试产品、Selenium Core和测试脚本三者分散在不同的服务器上。(测试脚本只关心将HTTP请求发送到指定的URL上,selenium本身不需要关心HTTP请求由于什么程序编程语言编写而成)
Selenium RC包括两部分:一个是Selenium RC Server,一个是提供各种编程语言的客户端驱动来编写测试脚本
07年,Webdriver诞生,WebDriver的设计理念是将端到端测试与底层具体的测试工具分隔离,并采用设计模式Adapter适配器来达到目标。WebDriver的API组织更多的是面向对象。
08/09年,selenium2诞生,selenium2其实是selenium rc和webdriver的合并,合并的根本原因是相互补充各自的缺点
09年,selenium3诞生,这个版本剔除了selenium rc , 主要由 selenium webdriver和selenium Grid组成, 我们日常使用的其实就是selenium webdriver,至于selenium grid是一个分布式实现自动化测试的工具

Selenium原理

1、访问网站

WebDriver 官方网站

2、webDriver的的http接口:

3、具体原理

首先运行webdriver.exe文件,它会绑定一个http端口,通过http:端口来进行调用相关的接口,webDriver通过对应的浏览器driver(驱动文件)进行调用上述的API,其实Selenium就是封装了这些api实现的一系列的窗口操作,主要就是用restful接口开启的本地端口进行发送API指令,这样driver就可以向浏览器发送对应的指令,即可完成打开浏览器、访问网站、切换Tab窗口等操作。

Python从零实现

Chrome和Firefox的各个版本的driver下载地址

Chrome和Firefox的各个版本的driver下载地址

代码实现:

代码:

import requests
import os
from threading import Threadif __name__ == '__main__':webdriver_path = "/Users/cbaiotaigc/Downloads/chromedriver_mac64/chromedriver"# 启动webdriver对应浏览器的驱动,比如说上面的Chrome对应的chromedriverThread(target=lambda: os.system(webdriver_path)).start()## requests.post()


上面红框里的端口就是chromedriver程序(windows里是chromedriver.exe)启动的http服务的本地端口。

自动打开一个受控的浏览器



访问某个网址:

https://baidu.com

获取页面的title


其他的接口调用可以自行封装,即可完整的实现selenium框架的代码。

Selenium原理以及Python从零实现相关推荐

  1. selenium原理python_selenium + python自动化测试unittest框架学习(一)selenium原理及应用...

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  2. selenium原理python_selenium+python(之一)

    各位好,今天是我第一次写博客,工作了也有一段时间了,今天想分享一些学习到的内容,大家共同学习,共同进步,写的不好的地方,多多待见,比较功底有限. 今天想写一些自动化相关的东西,也算是记录一下学习的历程 ...

  3. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  5. 新鲜角度看问题:从Python角度解析Selenium原理

    Selenium工作流程 Selenium工作原理 客户端和服务端之间实际是通过http协议进行通信,服务端的接口文档可参考: https://github.com/SeleniumHQ/seleni ...

  6. selenium原理python_从python角度解析selenium原理

    1.selenium工作流程 2.selenium工作原理(1)客户端和服务端之间实际是通过http协议进行通信,服务端的接口文档可参考: https://github.com/SeleniumHQ/ ...

  7. [Python从零到壹] 四十一.图像处理基础篇之图像采样处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. [Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. 【ACM】CODE[VS] 2806(DFS)
  2. java 基本的文件读写
  3. leetcode-26-删除排序数组中的重复项
  4. python优雅代码大全_代码这样写更优雅(Python版)
  5. hive sql练习_经典的SparkSQL/Hive-SQL/MySQL面试-练习题
  6. php中常用的运算符和表达式有哪几种,php 运算符与表达式详细介绍
  7. UVa10881 Piotr's Ants【模拟】
  8. 留言送书丨《Oracle高性能系统实战大全》包邮到家
  9. 宅家36天咸鱼翻身入职腾讯,值得收藏!
  10. python爬虫从入门到放弃-python爬虫从入门到放弃(二)- 爬虫的深层原理
  11. 利用K8S技术栈打造个人私有云(连载之:初章)
  12. 【初探IONIC】不会Native可不可以开发APP?
  13. 常见的绩效管理系统有哪些功能?
  14. 传统模式下安装linux,在将引导顺序更改为传统模式或在传统模式下安装操作系统时找不到引导设备...
  15. 微擎支付返回商户单号_ThinkPHP6对接实现微信H5支付
  16. 论文阅读-Whisper语音识别(OpenAI)
  17. echarts实现3D地球模式--3D线和标记mark
  18. 服务器设置静态IP地址教程,在Ubuntu服务器18.04上设置静态IP地址
  19. 计算机视觉最新研究方向,计算机视觉的主要研究的内容是什么?,计算机视觉研究方向...
  20. Keras实现小数量集图片分类——6类别Birds数据集分类

热门文章

  1. android 签名文件与sha1获取
  2. cmd/go: “package ... is not in GOROOT“问题解决办法
  3. BERT和ERNIE中[PAD],[CLS],[SEP],[MASK],[UNK]所代表的含义
  4. unpacked value/target cannot be used in assignment
  5. Java面试--autowired和resource区别
  6. 新型勒索软件Phobos利用弱安全性***目标
  7. 斐波那契数列求和——C语言(小白版)
  8. 赤峰中考计算机考试软件,赤峰市2018中考信息测试题单项选择部分-初三信息技术试卷与试题.pdf...
  9. linux 配置主机名
  10. 递归算法的时间&空间复杂度!