什么是 Selenium 和 WebDriver?

Selenium是一个浏览器自动化操作框架。selenium主要由三种工具组成。
1.第一个工具——SeleniumIDE,是Firefox的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,对许多用户来说并不适合。

2.因此第二个工具——Selenium WebDriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。

3.最后一个工具——SeleniumGrid帮助工程师使用Selenium API控制分布在一系列机器上的浏览器实例,支持并发运行更多测试。

在项目内部,它们分别被称为“IDE”、“WebDriver”和“Grid”。
什么是 Webdriver ?

官网上是这么介绍它的:
WebDriver is a clean, fast framework for automated testing of webapps.(WebDriver是一个干净、快速的web应用自动测试框架。)
但是我觉得它并不局限与进行自动化测试,完全可以用作其它用途。

WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。WebDriver支持Firefox(FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver)和Chrome (ChromeDriver)。 它还支持Android (AndroidDriver)和iPhone (IPhoneDriver)的移动应用测试。它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。

摘选自https://blog.csdn.net/scratlc/article/details/62044040
WebDriver如何工作

WebDriver是W3C的一个标准,由Selenium主持。

具体的协议标准可以从http://code.google.com/p/selenium/wiki/JsonWireProtocol#Command_Reference 查看。

从这个协议中我们可以看到,WebDriver之所以能够实现与浏览器进行交互,是因为浏览器实现了这些协议。这个协议是使用JOSN通过HTTP进行传输。

它的实现使用了经典的Client-Server模式。客户端发送一个requset,服务器端返回一个response。

我们明确几个概念。

Client

调用 WebDriverAPI的机器。

Server

运行浏览器的机器。Firefox浏览器直接实现了WebDriver的通讯协议,而Chrome和IE则是通过ChromeDriver和InternetExplorerDriver实现的。

Session

服务器端需要维护浏览器的Session,从客户端发过来的请求头中包含了Session信息,服务器端将会执行对应的浏览器页面。

WebElement

这是WebDriverAPI中的对象,代表页面上的一个DOM元素。

下面用代码简单实现WebDriver在百度搜索“建设性问题”
# 导入 selenium 下的 websriver(网页内驱动模块)
from selenium import webdriver

# 导入 time 时间模块
import time



# websriver(网页内驱动)Chrome(谷歌浏览器)
driver = webdriver.Chrome()

# time.sleep(睡眠等待时间) 后面的括号(1)是睡眠等待时间1秒 可根据实际情况设计时间长短
time.sleep(1)

# 给于想要打开的某个页面的url路径 如下例打开 百度 页面
url = 'http://www.baidu.com'

# 用get方法打开url
driver.get(url)

# find_element_by_id方法是(通过id查找元素)  (‘kw’)是百度搜索框中的id
# send_keys方法是(发送要搜索的内容) (‘括号内输入想要搜索的内容’)
driver.find_element_by_id('kw').send_keys("建设性问题")

# find_element_by_id方法是(通过id查找元素)  (‘su’)是百度搜索按键中的id
# click是单击事件
driver.find_element_by_id('su').click()
time.sleep(2)

#保存到本地baidu.html文件中
with open('baidu.html', 'wb') as f:
    打开文件写入获取后的解码游戏
    f.write(driver.page_source.encode('utf-8'))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值