环境安装
pip install selenium
支持搭配的web-driver:phantomjs(无头)、chrome(常用)、le、firefox……
针对不同版本chrome下载webdriver

查看chrome版本,下载相应的跨平台 Chrome 测试版
下载地址:Chrome for Testing availability

win64电脑可直接下载win64对应版本,其他平台使用其他下载链接即可。
下载后,文件夹解压后记好文件地址,我的是:C:\Users\16493\chrome-win64

配置环境变量

进入到环境变量后,找到系统变量 → Path,在下方点击编辑

点击新建,将刚刚记住的文件地址复制进去。


基础用法
对页面进行操作
初始化浏览器对象
也可以指定绝对路径来启动特定的chrome
from selenium import webdriver
# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()
# 指定绝对路径的方式(可选)
path = r'填入自己的chromedriver路径'
browser = webdriver.Chrome(path)
# 关闭浏览器
browser.close()
访问页面
from selenium import webdriver
# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()
# 访问百度首页
browser.get(r'https://www.baidu.com/')
# 关闭浏览器
browser.close()
设置浏览器大小
set_window_size()
用来设置浏览器大小,如果想要全屏,可以直接使用以下方式:
from selenium import webdriver
# 初始化浏览器为chrome浏览器
driver = webdriver.Chrome()
# 将浏览器设置为全屏
driver.maximize_window()
from selenium import webdriver
import time
browser = webdriver.Chrome()
# 设置浏览器大小:全屏
browser.maximize_window()
browser.get('https://www.baidu.com')
time.sleep(2)
# 设置分辨率 500*500
browser.set_window_size(500,500)
time.sleep(2)
# 关闭浏览器
browser.close()
获取页面基础属性
当使用selenium打开网页后,可以获取到基础的网页信息
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
# 网页标题
print(browser.title)
# 当前网址
print(browser.current_url)
# 浏览器名称
print(browser.name)
# 网页源码
print(browser.page_source)

定位页面元素
属性 | 函数 |
---|---|
CLASS | find_element(by=By.CLASS_NAME, value=‘’) |
XPATH | find_element(by=By.XPATH, value=‘’) |
LINK_TEXT | find_element(by=By.LINK_TEXT, value=‘’) |
PARTIAL_LINK_TEXT | find_element(by=By.PARTIAL_LINK_TEXT, value=‘’) |
TAG | find_element(by=By.TAG_NAME, value=‘’) |
CSS | find_element(by=By.CSS_SELECTOR, value=‘’) |
ID | find_element(by=By.ID, value=‘’) |
基本操作一
通过捕捉到元素后,复制Xpath,填入到参数内容即可定位。

因此可以实现以下操作:
点击
定位到指定元素后,添加.click()
即可
driver.find_element_by_xpath('填入xpath地址').click()
文本输入
driver.find_element_by_xpath('填入xpath地址').send_keys("hello")
清空文本内容
driver.find_element_by_xpath('填入xpath地址').clear()
获取文本信息
driver.find_element_by_xpath('填入xpath地址').text
如若获取不到内容,则需要实例化后进行输出即可
response = driver.find_element_by_xpath('填入xpath地址').text
print = (response)
基本操作二
无界面启动
一般启动均为有界面启动,方便调试。以下为无界面启动讲解:
方式一:
start_option = webdriver.ChromeOptions()
start_option.add_argument('--headless')
start_option.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=start_option)
方式二:
start_option = webdriver.ChromeOptions()
start_option.headless = True
browser = webdriver.Chrome(options=start_option)
无界面启动的优点是省去了一些杂乱的启动画面,相当于在后台运行操作浏览器。同时缺点就是不利于编译和维护,只适用独立下载的浏览器驱动。
基本操作三
等待方式
强制等待:可以直接使用time下的sleep
隐式等待:告诉Web驱动程序在它报错之前等待一定的时间。默认设置为0。一旦设置了时间,Web驱动程序将在抛出异常之前等待该时间。
driver.implicitly_wait(10)
隐式等待是全局生效的,隐式等待值的设置对 WebDriver 的整个生命周期有效,所以只要设置一次即可,不需要像time.sleep() 在每个地方都进行设置。
显式等待:显示等待会查找是否有name名为“kw”的元素,判断是否有name名为“bd”的元素。若是有,则执行下一步;若是没有,则等待0.5秒继续查找,直到超过了设置的最大时长然后报错。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.baidu.com'
driver.get(url)
try:
element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.NAME, 'bd')))
print('成功找到')
finally:
print('未找到指定元素')
driver.quit()
参与讨论