环境安装

pip install selenium

支持搭配的web-driver:phantomjs(无头)、chrome(常用)、le、firefox……

针对不同版本chrome下载webdriver

Selenium入门配置和使用插图

查看chrome版本,下载相应的跨平台 Chrome 测试版

下载地址:Chrome for Testing availability

Selenium入门配置和使用插图1

win64电脑可直接下载win64对应版本,其他平台使用其他下载链接即可。

下载后,文件夹解压后记好文件地址,我的是:C:\Users\16493\chrome-win64

Selenium入门配置和使用插图2

配置环境变量

Selenium入门配置和使用插图3

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

Selenium入门配置和使用插图4

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

Selenium入门配置和使用插图5
Selenium入门配置和使用插图6

基础用法

对页面进行操作

初始化浏览器对象

也可以指定绝对路径来启动特定的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)
Selenium入门配置和使用插图7

定位页面元素

属性函数
CLASSfind_element(by=By.CLASS_NAME, value=‘’)
XPATHfind_element(by=By.XPATH, value=‘’)
LINK_TEXTfind_element(by=By.LINK_TEXT, value=‘’)
PARTIAL_LINK_TEXTfind_element(by=By.PARTIAL_LINK_TEXT, value=‘’)
TAGfind_element(by=By.TAG_NAME, value=‘’)
CSSfind_element(by=By.CSS_SELECTOR, value=‘’)
IDfind_element(by=By.ID, value=‘’)

基本操作一

通过捕捉到元素后,复制Xpath,填入到参数内容即可定位。

Selenium入门配置和使用插图8

因此可以实现以下操作:

点击

定位到指定元素后,添加.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()