一、Selenium 简介:
Selenium 是一个用于自动化 Web 应用程序的工具,可以模拟用户在浏览器中的操作。
安装 WebDriver:
在使用 Selenium 前,需要下载对应浏览器的 WebDriver(如 ChromeDriver)并确保其路径正确设置。
下面介绍一个selenium的应用实例
应用前要先导入库:
- 导入所需的模块和库,包括 webdriver、Service 和 By,如有需要更多的模块,注意要进行引入
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
- 加载 WebDriver:创建 Chrome 浏览器的实例,指定 ChromeDriver 的路径,注意这里的路径设置要根据自己电脑中路径准确填写
test_webdriver = webdriver.Chrome(service=Service(r"D:\workspace\utils\chromedriver\最新\chromedriver-win64\chromedriver.exe"))
- 访问网页:使用 get() 方法打开指定的 URL,这里以百度网页为例
test_webdriver.get('https://www.baidu.com')
- 获取页面标题:可以通过 title 属性获取当前页面的标题。
print(test_webdriver.title)
- 输入文本:通过 find_element() 方法获取输入框元素,并使用 send_keys() 方法输入文本。这里通过百度首页中的开发者模式,找到搜索框的标签,根据其“ID”值,通过xpath进行定位。通过send_keys() 方法,实现自动向搜索框输入“Python”
element_input_txt = test_webdriver.find_element(By.ID, 'kw')
element_input_txt.send_keys('python')
点击按钮:同样通过开发者模式找到搜索按钮的标签“ID”,设置鼠标点击事件,实现自动搜索上述搜索框中添加的内容
element_input_btn = test_webdriver.find_element(By.ID, 'alisearch-submit')
element_input_btn.click()
- 退出浏览器:关闭浏览器并结束 WebDriver 会话。
test_webdriver.quit()
其他应用
(1)鼠标控制
from selenium.webdriver.common.action_chains import ActionChains
test_webdriver = webdriver.Chrome(service=Service(r"D:\workspace\utils\chromedriver\最新\chromedriver-win64\chromedriver.exe"))
# 以get方式向目标发起请求
test_webdriver.get('https://www.baidu.com/')
# 设置睡眠可观察到设置按钮被点击
time.sleep(3)
# 获取百度页面设置按钮
setting = test_webdriver.find_element(By.ID,'s-usersetting-top')
# perform() 支持鼠标事件的函数,没他不行
ActionChains(test_webdriver).move_to_element(setting).perform()
(2)页面的刷新与切换
# 使用需要引入以及加载驱动,这里不在重复,时间函数能够保证观察到效果
#打开百度页面
test_webdriver.get('https://www.baidu.com/')
time.sleep(3)
# 打开百度新闻页面
test_webdriver.get("https://news.baidu.com/")
time.sleep(3)
# 对页面刷新
test_webdriver.refresh()
time.sleep(3)
#返回百度首页,back从哪跳过来的就跳回去哪
test_webdriver.back()
time.sleep(3)
# 页面前进至新闻页面
test_webdriver.forward()
time.sleep(3)
# 退出
test_webdriver.quit()
(3)元素的显示等待
- WebDriverWait显示等待,5s等待,0.5秒循环一次
- until,EC场景判断,进行元素选择
- 参数列表:(1)表示目标,驱动对象 (2)超时的时长范围‘秒’, (3)检查间隙‘秒’
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
test_webdriver = webdriver.Chrome(service=Service(r"D:\workspace\utils\chromedriver\最新\chromedriver-win64\chromedriver.exe"))
# test_webdriver.set_window_size(600,800)
test_webdriver.get("https://www.baidu.com")
# WebDriverWait显示等待,5s等待,0.5秒循环一次
# until,EC场景判断,进行元素选择
# 参数列表:(1)表示目标,驱动对象 (2)超时的时长范围‘秒’, (3)检查间隙‘秒’
element = WebDriverWait(test_webdriver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
element.send_keys('Python')
time.sleep(5)
(4)隐式等待
# 监测需要定位的 元素是否存在
from selenium.common.exceptions import NoSuchElementException
test_webdriver = webdriver.Chrome(service=Service(r"D:\workspace\utils\chromedriver\最新\chromedriver-win64\chromedriver.exe"))
# test_webdriver.set_window_size(600,800)
#隐式等待5秒
test_webdriver.implicitly_wait(5)
test_webdriver.get("https://www.baidu.com")
try:
test_webdriver.find_element(By.ID,'kw').send_keys('Python')
time.sleep(2)
except NoSuchElementException as e:
print('无此元素')
print(e)
常用方法总结
- get(url):打开指定的网址。
- find_element(by, value):查找单个元素。
- find_elements(by, value):查找多个元素,返回一个列表。
- send_keys(value):向输入框发送键入的文本。
- click():模拟点击操作。
- quit():关闭浏览器并结束 WebDriver 会话。