烂笔头:知识回顾-->Selenium之Webdriver
成长很苦,进步很甜,希望我们大家每天都能够向上生长。
Webdriver概述
Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Webdriver 的API更容易理解和使用,其可读性和可维护性也大大提高。Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。
支持浏览器
Firefox (FirefoxDriver)
IE(InternetExplorerDriver)
Opera(OperaDriver)
Chrome (ChromeDriver)
safari(SafariDriver)
支持语言
Java
C#
PHP
Python
Perl
Ruby
安装,卸载、查看
# 安装:
pip install selenium==XXXX
# 卸载
pip uninstall selenium
# 查看版本号:
pip show selenium
示例demo:
打开Chrome浏览器,
最大化窗口,
打开bilibili,打印标题,等待3s,
页面刷新
打开百度,打印标题,等待2s,
页面后退,
页面前进,
设置窗口大小
关闭浏览器。
import logging
import time
from selenium import webdriver
# 设置日志等级
logging.basicConfig(level=logging.DEBUG)
# 打开浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 访问bilibili
driver.get('https://www.bilibili.com/')
# 打印标题
print(driver.title)
# 等待3s
time.sleep(3)
# 页面刷新
driver.refresh()
driver.get('https://www.baidu.com')
print(driver.title)
time.sleep(2)
# 页面后退
driver.back()
# 页面前进
driver.forward()
# 退出
driver.quit()
Selenium原理
在上面的demo中按住ctrl + 鼠标右键点击webdriver.Chrome()中的Chrome,进入源码查看
此处实际做的就是实例化了一个service对象,然后调用了Service类中的start方法
继续进入start方法
忽略异常捕获部分
subprocess这个东西不知道是什么啊,求教Google大神。
subprocess --- 子进程管理
实际上做的是调用了系统的cmd命令,然后启动了chromedriver这个应用
继续回到chrome/webdriver.py
start方法被调用后,
调用父类的RemoteWebDriver的实例化方法(源码71行),进入到这个方法中,查看154行有个start_session方法,进入到start_session方法中,第243行,有个excute方法,进入excute方法第310行command_executor.execute方法,进入 command_executor 方法,发现调用RemoteConnection类的调用,进入该类,第230行使用httplib中的HTTPConnection方法发送请求。
参考链接
能力有限,若文中有错,欢迎指正。