《一》常见的操作元素行为
(1)导入webdriver包
from selenium import webdriver
(2)启动浏览器
driver = webdriver.Chrome()
(3)浏览器窗体的最大化
driver.maximize_window()
(4)浏览器窗体的最小化
driver.minimize_window()
(5)设置窗体大小尺寸
driver.set_window_size(1000, 200)
(6)访问指定url和文件
访问url:driver.get('http://www.baidu.com')
访问文件:driver.get(r'D:\测码\头像\index.html')
(7)浏览器的特性
浏览器前进:driver.forward()
浏览器后退:driver.back()
浏览器刷新:driver.refresh()
(8)获取title
print(driver.title)
《二》下拉列表框
(1)driver.find_element(定位方法,定位值)《页面中的元素操作都是基于元素获取之后才能够进行的》
(2)用户输入
driver.find_element('ID','kw').send_keys()
(3)用户点击(百度一下->图片搜索)
1.导入包+初始化浏览器+访问百度首页
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
2.定位图片搜索进行点击
driver.find_element('xpath','//*[@id="s_kw_wrap"]/span[2]').click()
(4)文件上传(百度一下->图片搜索)-->选择文件
1.导入包+初始化浏览器+访问百度首页
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
2.driver.find_element('xpath', '//*[@id="form"]/div/div[2]/div[2]/input').send_keys(r'D:\测码\头像\1.jpg')
3.说明:send_keys只限于input标签的文件上传和string的输入
(5)三种下拉列表框(现如今市场上基本都是基于input和div来实现的下拉列表框)
1.div
1.通过click来进行操作
2.div下拉列表框与鼠标悬停(百度一下->设置->高级搜索->全部时间->最近一月)
a.导入包+初始化浏览器+访问百度首页
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
b.导入ActionChains包
from selenium.webdriver import ActionChains
c.定位设置
el = driver.find_element('xpath', '//span[text()="设置"]')
d.导入actionchains类进行悬停操作
ActionChains(driver).move_to_element(el).perform()
e.定位高级搜索进行点击
driver.find_element('link text', '高级搜索').click() sleep(2)
f.弹窗定位全部时间
driver.find_element('xpath', '//*[@id="adv-setting-gpc"]/div/div[1]').click() sleep(1)
g.定位最近一个月
driver.find_element('xpath', '//p[text()="最近一月"]').click()
h.退出浏览器与进程,释放资源
driver.quit()
2.input
a.一般针对时间控件,只读状态。通过click来进行操作(推荐定位方式)
b.若如果有readonly的属性,就先remove掉,再通过send_keys进行输入(容易出现问题,不推荐的定位方式)
3.select
a.最为传统的形式,相对有年代感的系统才会存在
b.导入包+初始化浏览器+访问百度首页
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
c.导入Select包
from selenium.webdriver.support.select import Select
d.select标签下拉列表框
select = Select(driver.find_element('id', 'deviceType'))
e.获取指定的值,进行选择的三种方式
方式一:通过《索引下标》来定位选项
select.select_by_index(1)
方式二:通过《value属性值》来定位选项
select.select_by_value('11')
方式三:通过《文本内容》定位选项
select.select_by_visible_text('自动驾驶')
《三》内嵌窗体(Iframe)
(1)理论知识
1.弹出新页面时,driver还是操作着原来的页面,是因为有句柄的存在(一个页面 == 一个句柄)
2.固化模式:操作新的页面,就需要切换到新的句柄
1. 获取所有句柄 2. 切换到新的句柄
3.如果要关闭原有的标签页,操作新的页面
1. 获取所有句柄 2. 关闭原有标签页 3. 切换到新句柄
4.在操作页面时,一定注意最多保留两个页面存在,不要超过两个
(2)网易云音乐
1.基本代码
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
sleep(2)
driver.maximize_window()
2.访问网易云首页
driver.get('http://music.163.com') driver.implicitly_wait(10)
3.定位登录进行点击
driver.find_element('link text', '登录').click()
4.定位选择其他登录模式进行点击
driver.find_element('link text', '选择其他登录模式').click()
5.定位复选框进行勾选(同意XX条款政策)
driver.find_element('id', 'j-official-terms').click()
6.定位QQ登录进行点击
driver.find_element('link text', 'QQ登录').click() sleep(2) print(driver.title)
7.获取当前所有句柄
handles = driver.window_handles print(handles)
8.切换到新的句柄页
driver.switch_to.window(handles[1]) print(driver.title)
9.切换到iframe:通过id,name直接切换iframe,(也可以定位iframe元素,将元素作为参数传递)
driver.switch_to.frame(driver.find_element('id', 'ptlogin_iframe'))
10.定位QQ进行点击登录
driver.find_element('id', 'img_out_508419907').click()
11.从iframe切换到默认内容
driver.switch_to.default_content() sleep(1)
12.切换回原有句柄
driver.switch_to.window(handles[0]) sleep(1) print(driver.title)
《四》Selenium4.0新增的关于浏览器与标签页的管理
实例演示
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
handles = driver.window_handles
print(handles)
sleep(2)
# 新增一个浏览器或者句柄页并且直接进行切换:通过参数来定义(tab:标签页,window浏览器)
driver.switch_to.new_window('tab')
handles = driver.window_handles
print(handles)
driver.get('http://www.jd.com')
driver.get('http://www.baidu.com')
人生苦短,及时行乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现