尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【Selenium(五)】
一、鼠标事件from selenium import webdriver # 导入ActionChains类进行鼠标悬停操作 from selenium.webdriver.common.action_chains import ActionChains import time # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) time.sleep(2) # 定位到设置 st_buttondriver.find_element_by_id(s-usersetting-top) # 设置鼠标悬停 ActionChains(driver).move_to_element(st_button).perform()二、键盘事件# -*- coding: utf-8 -*- from selenium import webdriver # 导入Keys类调用键盘 from selenium.webdriver.common.keys import Keys import time # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) time.sleep(2) # 定位到设置,输入内容 search_boxdriver.find_element_by_id(kw) search_box.send_keys(seleniumABC) time.sleep(3) # 删除多余的m调用删除键 # Keys.BACK_SPACE只能删除一个字母要删除多个字母需要乘几 search_box.send_keys(3*Keys.BACK_SPACE) time.sleep(3) # 调用回车建 search_box.send_keys(Keys.ENTER)三、获取断言信息1通过文本信息判断# -*- coding: utf-8 -*- from selenium import webdriver # 导入Keys类调用键盘 from selenium.webdriver.common.keys import Keys import time # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) # 定位到设置,输入内容并搜索 search_boxdriver.find_element_by_id(kw) search_box.send_keys(python) search_box.send_keys(Keys.ENTER) # 搜索出来第一页的所有内容标题 # find_element_by_xpath定位元素的方法现实的是elements多个元素在一个列表中 titles driver.find_elements_by_xpath(//div[idcontent_left]//h3) print(titles) # 由于获取结果是列表要获取内容必须遍历列表一个一个获取 for t in titles: #获取文本信息 print(t.text)2通过title信息做断言# -*- coding: utf-8 -*- from selenium import webdriver # 导入Keys类调用键盘 from selenium.webdriver.common.keys import Keys import time # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) # 定位到设置,输入内容并搜索 search_boxdriver.find_element_by_id(kw) search_box.send_keys(python) search_box.send_keys(Keys.ENTER) time.sleep(3) # 获取网页标题 print(driver.title)3根据URL判断# -*- coding: utf-8 -*- from selenium import webdriver # 导入Keys类调用键盘 from selenium.webdriver.common.keys import Keys import time # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) # 定位到设置,输入内容并搜索 search_boxdriver.find_element_by_id(kw) search_box.send_keys(python) search_box.send_keys(Keys.ENTER) time.sleep(3) # 获取当前网页URL print(driver.current_url)四、设置元素等待# -*- coding: utf-8 -*- from selenium import webdriver # 显示等待时元素定位方式需要使用By加载 from selenium.webdriver.common.by import By # 设置显示等待 from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) # 定位到设置,输入内容并搜索 search_boxdriver.find_element_by_id(kw) # WebDriverWait(浏览器driver,最大超时时间,轮询时间) # EC.presence_of_element_located()里面接受的是元素定位方式和具体的表达式要使用元组的形式传入 # 定位搜索框 search_objWebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,kw))) # 输入内容 search_obj.send_keys(hello) # 设置提交 # search_obj.submit() search_obj.send_keys(Keys.ENTER)五、多窗口切换浏览器打开的窗口有一个叫句柄的概念句柄类似于每一个标签页的id一样是唯一的。# -*- coding: utf-8 -*- from selenium import webdriver # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 from selenium.webdriver.common.keys import Keys driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://www.baidu.com/) # 定位到设置,输入内容并搜索 search_boxdriver.find_element_by_id(kw) search_box.send_keys(李克强) search_box.send_keys(Keys.ENTER) # 获取标签页句柄 windowhandledriver.current_window_handle # print(windowhandle) # 点击 李克强百度百科 driver.find_element_by_xpath(//div[id1]/div/h3/a).click() # 获取当前浏览器的所有窗口的句柄获取回来的拆改纽扣句柄放在一个列表里 headlesdriver.window_handles print(headles) # 根据句柄进行切换 方法一 for head in headles: # 如果窗口句柄不等于打开的第一个窗口的句柄则就是第二个 if head!windowhandle: driver.switch_to.window(head) 方法二 # 根据下标进行句柄切换获取回来的时候窗口的句柄是一个列表-1代表是最新打开的窗口句柄0代表第一个 driver.switch_to.window(headles[-1]) # 点击 播报 按钮 driver.find_element_by_xpath(//div[classlemmaTitleBox_EbvJX]/div/span/span/span).click()六、表单切换在Web应用中经常会遇到frame/iframe表单嵌套页面的应用WebDriver只能在一个页面上对元素识别与定位对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。switch_to.frame()默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性则可以通过下面的方式进行定位除此之外在进入多级表单的情况下还可以通过switch_to.default_content()跳回最外层的页面。# -*- coding: utf-8 -*- import time from selenium import webdriver # 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 from selenium.webdriver.common.keys import Keys driver webdriver.Edge(rD:\tools\driver\msedgedriver.exe) # 设置浏览器最大化显示 driver.maximize_window() # 隐式等待 driver.implicitly_wait(10) # 打开网页 driver.get(https://mail.163.com/) # iframe表单切换 switch_to.frame()里面可以填写iframe表单的id和name,但是id和name要唯一 还可以通过其他的定位方式定位到该iframe标签然后将定位到iframe标签对象传入到switch # 通过XPath的方式定位iframe标签 iframe_elementdriver.find_element_by_xpath(//div[idloginDiv]/iframe) driver.switch_to.frame(iframe_element) # 定位邮箱输入框 driver.find_element_by_css_selector(input[nameemail]).send_keys(xiangzc) # 定位密码框 driver.find_element_by_css_selector(input[namepassword]).send_keys(xiangzc) # 点击 登录 按钮 driver.find_element_by_id(dologin).click() time.sleep(2) # 点击VIP,按照此方式进入失败因为进行完上述操作后是在子页面中而VIP还在外层页面所以需要切换出来 driver.switch_to.default_content() driver.find_element_by_css_selector(a[hrefhttps://vipmail.163.com/?fromfmail]).click()
RELATED

相关推荐

Zulip 在已有服务器上的生产部署:共存安装的风险评估、冲突处理与完整操作指南

Zulip 在已有服务器上的生产部署:共存安装的风险评估、冲突处理与完整操作指南

Zulip 在已有服务器上的生产部署:共存安装的风险评估、冲突处理与完整操作指南 【免费下载链接】zulip Zulip server and web application. Open-source team chat that helps teams stay productive and focused. 项目地址: https://gitcode.com/GitHub_Trending…

📅 2026/9/13 12:24:46
cua-driver Wayland 合成器身份证明方案:超越 Sway 的精确浏览器窗口绑定架构

cua-driver Wayland 合成器身份证明方案:超越 Sway 的精确浏览器窗口绑定架构

cua-driver Wayland 合成器身份证明方案:超越 Sway 的精确浏览器窗口绑定架构 【免费下载链接】cua Scale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation. 项目地址: https://gitc…

📅 2026/9/13 12:24:46
Wand-Enhancer 离线补丁教程:5 个补丁选项解锁 Wand Pro 与手机远程控制

Wand-Enhancer 离线补丁教程:5 个补丁选项解锁 Wand Pro 与手机远程控制

Wand-Enhancer 离线补丁教程:5 个补丁选项解锁 Wand Pro 与手机远程控制 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer…

📅 2026/9/13 12:24:46
MORE NEWS

更多资讯

📰

TiDB 保存点实操:长事务部分回滚避坑

TiDB 保存点实操:长事务部分回滚避坑 【免费下载链接】tidb TiDB is built for agentic workloads that grow unpredictably, with ACID guarantees and native support for transactions, analytics, and vector search. No data silos. No noisy neighbors. No in…

📰

浙大数据可视化课程学习笔记

目录概述公开数据集(以下是正文)可视化——从定义到欣赏什么是数据可视化为什么需要可视化什么是好的可视化感知与认知可视化设计编码与变换可视化设计可视化的编码可视化的变换时间数据可视化时间数据可视化时空数据可视化流数据可视化时间数据可视化的…

📰

ARIMA-SSA-LSTM组合模型:时间序列预测的完整实战指南

简介:这是一份面向Python初学者与高校学生的ARIMA-SSA-LSTM组合时间序列预测完整实现,覆盖数据、源码与保姆级注释,适合计算机、电子信息工程、数学等专业用于课程设计、期末大作业和毕业设计。压缩包共3个文件,含两个CSV格式的时…

📰

基于协同过滤与SVD的Steam游戏推荐系统设计与实现

简介:这是一份基于机器学习的Steam游戏推荐系统Python源码,源于个人毕业设计,评审得分98分,代码经过完整调试与测试,可直接运行。资源面向计算机、通信、人工智能、自动化等专业的学生与从业者,适用于课程设…

📰

基于MATLAB/Simulink的机器人强化学习自适应控制实践指南

简介:基于强化学习的自适应机器人控制算法项目,面向机器人控制、智能决策方向的研发人员与研究生,聚焦如何在未知或变化环境下通过交互学习实时调整控制策略。压缩包共127个文件,以106个MATLAB脚本为核心,辅以JPG/PNG/…

📰

【Selenium(五)】

一、鼠标事件from selenium import webdriver # 导入ActionChains类进行鼠标悬停操作 from selenium.webdriver.common.action_chains import ActionChains import time# 打开一个浏览器 # 法一、添加环境变量重启电脑 # 法二、填写浏览器驱动的绝对路径 driver webdriver.Ed…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬