vlambda博客
学习文章列表

烂笔头:知识回顾-->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方法发送请求。

参考链接



能力有限,若文中有错,欢迎指正。


您的转发关注是对我的最大支持。



长按下方图片即可关注。