大家好,我是才哥。
今天带大家一起学(复)习模拟浏览器运行的库Selenium
,它是一个用于Web
应用程序测试的工具。Selenium
测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE
(7, 8, 9, 10, 11),Mozilla Firefox
,Safari
,Google Chrome
,Opera
和Edge
等。
这里我将以Chrome
为例进行Selenium
功能的演示~
目录:
文章目录
0. 准备工作
在开始后续功能演示之前,我们需要先安装Chrome
浏览器并配置好ChromeDriver
,当然也需要安装selenium
库!
0.1. 安装selenium库
pip install selenium
0.2. 安装浏览器驱动
其实,有两种方式安装浏览器驱动:一种是常见的手动安装,另一种则是利用第三方库自动安装。
以下前提:大家都已经安装好了Chrome
浏览器哈
手动安装
先查看本地Chrome
浏览器版本:(两种方式均可)
- 在浏览器的地址栏键入
Chrome://version
,即可查看浏览器版本号
- 或者点击
Chrome
菜单 帮助→关于Google Chrome,查看浏览器版本号
再选择对应版本号的驱动版本
下载地址:https://chromedriver.storage.googleapis.com/index.html
最后进行环境变量配置,也就是将对应的ChromeDriver
的可执行文件chromedriver.exe
文件拖到Python
的Scripts
目录下。
注:当然也可以不这样做,但是在调用的时候指定chromedriver.exe
绝对路径亦可。
自动安装
自动安装需要用到第三方库webdriver_manager
,先安装这个库,然后调用对应的方法即可。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
browser = webdriver.Chrome(ChromeDriverManager().install())
browser.get('http://www.baidu.com')
search = browser.find_element_by_id('kw')
search.send_keys('python')
search.send_keys(Keys.ENTER)
# 关闭浏览器
browser.close()
在上述代码中,ChromeDriverManager().install()
方法就是自动安装驱动的操作,它会自动获取当前浏览器的版本并去下载对应的驱动到本地。
====== WebDriver manager ======
Current google-chrome version is 96.0.4664
Get LATEST chromedriver version for 96.0.4664 google-chrome
There is no [win32] chromedriver for browser in cache
Trying to download new driver from https://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_win32.zip
Driver has been saved in cache [C:UsersGdc.wdmdriverschromedriverwin3296.0.4664.45]
如果本地已经有该浏览器渠道,则会提示其已存在。
====== WebDriver manager ======
Current google-chrome version is 96.0.4664
Get LATEST driver version for 96.0.4664
Driver [C:UsersGdc.wdmdriverschromedriverwin3296.0.4664.45chromedriver.exe] found in cache
搞定以上准备工作,我们就可以开始本文正式内容的学习啦~
1. 基本用法
这节我们就从初始化浏览器对象、访问页面、设置浏览器大小、刷新页面和前进后退等基础操作。
1.1. 初始化浏览器对象
在准备工作部分我们提到需要将浏览器渠道添加到环境变量或者指定绝对路径,前者可以直接初始化后者则需要进行指定。
from selenium import webdriver
# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()
# 指定绝对路径的方式
path = r'C:UsersGdc.wdmdriverschromedriverwin3296.0.4664.45chromedriver.exe'
browser = webdriver.Chrome(path)
# 关闭浏览器
browser.close()
可以看到以上是有界面的浏览器,我们还可以初始化浏览器为无界面的浏览器。
from selenium import webdriver
# 无界面的浏览器
option = webdriver.ChromeOptions()
option.add_argument("headless"