当前位置: 首页 > article >正文

Selenium WebDriver——必会知识

在介绍之前先来说一下HTML、Selenium、WebDriver的关系HTML超文本标记语言它是一个网页的骨架通过各种标签和属性id、class定义了页面的元素DOM模型当浏览器解析HTML后会在内存中对HTML结构生成一个DOM树。如图所示Selenium是一个自动化工具/API通过它来抓取到DOM模型上的元素WebDriver驱动程序是一个API或协议selenium独有的selenium需要用WebDriver控制浏览器做进行抓取每一个浏览器都由一个特定的WebDriver实现支持例如chrome需要chrome driver它负责浏览器和Selenium之间的通信Locator定位器Selenium实现抓取元素的具体工具利用自身包含的8种定位器抓取元素1、元素定位八大方法基础定位id通过元素id属性定位driver.find_element(By.ID,login_btn)name通过name属性定位用于表单中的输入框driver.find_element(By.NAME,username)class_name:通过class属性定位如果有多个class用空格隔开只能选其中一个driver.find_element(By.CLASS_NAME,s_ipt)链接定位针对a标签link_text: 通过链接的完整文本定位driver.find_element(By.LINK_TEXT, 新闻 )partial_link_text:通过链接的部分文本定位driver.find_element(By.PARTIAL_LINKLTEXT,新)标签与结构定位万能tag_name:通过标签名定位如div,input)driver.find_element(By.TAG_NAME,input)xpath:万能定位器而已根据层级、属性、文本等文件组合定位driver.find_element(By.XPATH,//*[id,ui] // a[text()新闻])css_selector:性能最高的复杂定位方法速度比xpath快driver.find_element(By.CSS_SELECTOR,#u1.s_ipt)这里继续补充知识点1、Webdriver是驱动程序的统称每个浏览器都有自己名字的Driver为什么不能通用因为每个浏览器的内核不一样它们解析出的DOM树逻辑是一样的但每个浏览器内部调用底层节点的API不一样为了抹平差异利用WebDriver写python代码实现在不同浏览器上运行2、WebDriver没每次“抓取”信息过程发出请求调用find_element编码传输selenium将动作打包成HTTP请求驱动执行收到请求后在浏览器生成的DOM树扫描返回结果将抓取到的内容打包成HTTP响应传回代码3、现在更流行另一种工具——PlayWright为什么selenium比PlayWright慢Selenium基于WebDriver单向通信每次操作又要发送一次请求遇到网络延迟累加就会很慢PlayWright是基于WebSocket双向通信实时监听浏览器的动作不需要下载匹配版本的驱动文件效率更高2、selenium的页面操作点击、输入、下拉框、弹窗处理等怎么实现基础动作输入文本send_keysinput_boxdriver.find_element(By.ID,kw) input_box.send_keys(小徐学编程)点击元素search_btndriver.find_element(By.ID,xu) search_btn.click()清空输入框input_box.clear()下拉框处理Select类普通HTML有select按钮可以直接用click 点击from selenium.webdriver.support.ui import Select #定位到select本身 dropdown Select(driver.find_element(By.ID,city_select)) dropdown.select_by_index(1) #根据索引选 dropdown.select_by_value(sh) #根据value 属性选 dropdown.select_by_visible_text(北京) #根据显示的文字选网页弹窗由Javascript触发的alert, confirm , prompt不属于DOM树鼠标无法点击必须要用到 switch_to 切换到警告框#切换到当前的弹窗 alert driver.switch_to.alert print(alert.text) #输出弹窗里的文字 alert.accept() #点确定 #alert.dismiss() #点取消 #alert.send_keys(输入内容) #输入内容鼠标悬停与拖拽from selenium.webdriver.common.action_chains import ActionChains menudriver.find_element(By.ID,user_menu) #鼠标悬停在菜单上 ActionChains(driver).move_to_element(menu).perfom() #从source元素拖拽到target sourcedriver.find_element(By.ID,draggable) targetdriver.find_element)BY.ID,droppable) ActionChains(driver).drag_and_drop(source,target).perfom()重点多窗口与Iframe切换问题某些元素定位是对的但找不动元素Iframe切换有些网页藏在iframe标签里#切换进iframe driver.switch_to.frame(login_frame) #操作完成后必须切回到主页面 driver.switch_to.default_content()多窗口切换点击链接跳出新的标签页WebDriver的焦点还在旧页面#获取所有窗口句柄 handlesdriver.windows_handles #切换到最新打开窗口 driver.switch_to.windows(handles[-1])3、等待机制显示等待使用场景异步类型的异步加载的元素点击按钮后由Javascript生成的弹窗和列表项状态切换验证按钮在点击后需要等进度条消失页面跳转等URL包含某个特定的关键词、页面标题发生变化上传/下载文件上传下载时出现提示文字注意事项必须配合定位器使用传入By和expected_conditions遇到长代码时和代码一起封装进去针对不同的操作设置不同的超时隐式等待在项目初期搭建项目结构简单时网页加载速度快、异步请求较少可以用隐式等待做一个基本的全局保障保底机制设置一个较短时间5″防止网络抖动导致脚本崩塌注意显示等待和隐式等待不能混用在同一个项目代码逻辑中先执行until拿到元素对象再执行等待操作显示等待抛出超时异常时要考虑代码逻辑中是否捕获做一些截图、清除缓存的处理

相关文章:

Selenium WebDriver——必会知识

在介绍之前先来说一下HTML、Selenium、WebDriver的关系HTML(超文本标记语言):它是一个网页的骨架,通过各种标签和属性(id、class)定义了页面的元素DOM(模型):当浏览器解析…...

AppleRa1n:免费解锁iOS 15-16激活锁的终极解决方案

AppleRa1n:免费解锁iOS 15-16激活锁的终极解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n AppleRa1n是一款专为iOS 15-16系统设计的iCloud激活锁绕过工具,帮助用户恢复…...

2025届毕业生推荐的五大降重复率方案实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当人工智能生成内容被广泛运用的时候,把 AIGC 痕迹降低成为了内容创作者最为核心…...

无网环境下的救星:详解Win10离线部署.NET Framework 3.5的四种实战方案

1. 为什么需要离线部署.NET Framework 3.5? 很多企业内网环境出于安全考虑会限制外网访问,这时候安装.NET Framework 3.5就成了大问题。Win10默认不包含这个老版本框架,但大量老旧办公软件(比如财务系统、ERP客户端)又…...

为什么92%的开发者写的Prompt无法触发Code LLM最优推理路径?——基于17个主流模型的Token-level Prompt敏感性压测报告

第一章:智能代码生成Prompt工程指南 2026奇点智能技术大会(https://ml-summit.org) Prompt工程已从辅助技巧演变为智能代码生成系统的核心能力。高质量的Prompt不仅决定模型输出的准确性与可维护性,更直接影响开发效率、安全边界和跨团队协作质量。在现…...

为什么电机控制观测器要使用锁相环(PLL)---学习笔记

这是电机两相反电动势其中这就是转子的电角度反电势改写成这里先打住我们先了解锁相环是是干什么的,下面是PLL的大致结构通过PLL求出能够以θ_rPLL由三个部分组成1.鉴相器比较反电动势相位与算法估计相位差,在这里就是角度差2.LPF(环路滤波器…...

Xshell8与Xftp8免费版下载安装2026(附安装包)

一、下载 1、网盘自提: xshell和xftp安装包链接: https://pan.baidu.com/s/1phsX1lpQF_vY1tJvHKRNUw?pwd1111 提取码: 1111 2、官网下载: https://www.xshell.com/zh/free-for-home-school/二、Xshell安装 1、双击安装包,傻瓜式安装&#xf…...

NPJ Precis Oncol 加拿大蒙特利尔大学医院研究中心:多组学融合网络预测结直肠癌肝转移术后早期复发

01文献学习今天分享的文献是由加拿大蒙特利尔大学医院研究中心等团队于2026年1月10日在肿瘤学领域顶刊《npj Precision Oncology》(中科院1区,IF8)上发表的研究“Multi-omics fusion network for prediction of early recurrence in colorect…...

Python安装教程2026(附安装包)

1.浏览器打开网址:www.python.org 也可以网盘自提 python安装包https://pan.quark.cn/s/69bfcd430b83 2.根据电脑系统选择下载 3.确定电脑系统属性,此处我们以win10的64位操作系统为例 4.安装python 3.6.3 双击下载的安装包 python-3.6.3.exe 注意要勾选&#xf…...

消防主机组网通信质量有担忧?巧用光纤环网冗余方案,实现超远距离、高可靠CAN通讯

摘要:在大型园区、隧道、高层建筑等消防报警系统中,如何将分散各处的消防主机(如海湾、青鸟、利达等品牌)稳定可靠地联网,并实现长距离、抗干扰的数据传输,一直是工程实践的难点。本文分享我们如何利用LCAN…...

别再乱用concat了!FFmpeg合并视频文件前必须检查的3个细节(清单编码、路径、Profile)

FFmpeg视频合并避坑指南:3个必须检查的关键细节 第一次用FFmpeg合并视频时,我盯着屏幕上那串"Invalid data found when processing input"错误提示整整半小时。明明只是想把几个会议录像拼在一起,为什么连这么简单的操作都会出错&a…...

飞搭系列 | 列表组件效率倍升,数据操作一步到位

前言 飞搭低代码平台(FeiDa,以下简称“飞搭”),为企业提供在线化、灵活的业务应用构建工具,支持高低代码融合,助力企业低门槛、高效率和低成本地快速应对市场变化,加速复杂业务场景落地。 概要介…...

LVGL Spinner控件实战:5分钟搞定3种酷炫加载动画(附ESP32/STM32代码)

LVGL Spinner控件实战:5分钟搞定3种酷炫加载动画(附ESP32/STM32代码) 在嵌入式GUI开发中,加载动画是提升用户体验的关键细节。LVGL作为轻量级图形库,其Spinner控件能以极低资源消耗实现专业级视觉效果。本文将带你快速…...

C# OnnxRuntime 部署 DDColor

说明地址:https://github.com/piddnad/DDColor效果模型信息Model Properties ------------------------- ---------------------------------------------------------------Inputs ------------------------- name:input tensor:Float[1, 3,…...

告别Source Insight卡顿!用Vim + Ctags + Cscope打造Linux下丝滑的C/C++代码阅读环境

打造Linux下极致流畅的C/C代码阅读环境:Vim Ctags Cscope实战指南 第一次在Linux服务器上打开一个大型C项目时,我盯着终端里密密麻麻的代码手足无措。图形化IDE在远程桌面上的卡顿让我几乎无法工作,每次跳转定义都要等待数秒,开…...

基于Kotti-py312这个项目,帮我写一个AI 交流网站。先帮我规划一下!我的诉求是能实现AI资源的互助,大家互相帮着找点子,一起落地实践!

基于Kotti-py312这个项目,帮我写一个AI 交流网站。先帮我规划一下! 我的诉求是能实现AI资源的互助,大家互相帮着找点子,一起落地实践!Kotti-py312这个项目代码在:G:\dumatework核心理念:AI 资源…...

Sunshine游戏串流终极指南:15分钟打造你的跨设备游戏天堂

Sunshine游戏串流终极指南:15分钟打造你的跨设备游戏天堂 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专为M…...

g4f提供的模型调用:python JavaScript和curl

g4f提供模型的使用,例子页面:G4F - Providers and Models 可以这样: python from g4f.client import Clientclient Client() response client.chat.completions.create(model"",messages[{"role": "user"…...

告别Keil:在Windows上构建VSCode+GCC+OpenOCD一体化ARM开发环境

1. 为什么选择VSCodeGCCOpenOCD替代Keil? 作为一名在嵌入式领域摸爬滚打多年的开发者,我深知传统IDE(如Keil)给开发者带来的种种困扰。高昂的授权费用、臃肿的安装包、缓慢的编译速度,以及那仿佛停留在上个世纪的代码编…...

AI测试标准更新:2026年新规详解

从“野蛮生长”到“有标可依”的行业转折点进入2026年,人工智能技术已深度融入各行各业,从生成式内容创作到具身智能机器人,AI系统正以前所未有的速度重塑生产和生活。然而,技术狂奔的背后,是日益凸显的风险与挑战&…...

Netflix四月底推重新设计移动应用,竖版视频流能否拓展娱乐新体验?

Netflix移动应用四月底焕新,竖版视频流登场 Netflix于周四宣布,将在四月底推出重新设计的移动应用程序,其中一大亮点是包含竖版视频流。该公司在2026年第一季度致股东的财报信中提及,此次重新设计旨在更好地体现不断拓展的娱乐内容…...

告别Excel手工作坊:用Tableau Prep Builder 2024.1自动化清洗销售数据的保姆级教程

告别Excel手工作坊:用Tableau Prep Builder 2024.1自动化清洗销售数据的保姆级教程 销售数据就像一座金矿,但大多数时候我们却用勺子而不是挖掘机在开采。想象一下这样的场景:每月底,你从CRM系统导出客户订单,从财务系…...

Depix实战手记:从原理到踩坑,一次不完美的马赛克破解尝试

1. Depix初体验:当马赛克遇上逆向工程 第一次听说Depix这个项目时,我正在帮朋友处理一张被打满马赛克的图片。那画面简直就像被泼了一桶油漆,完全看不出原貌。正当我准备放弃时,突然想起在技术论坛上看到过关于Depix的讨论——这个…...

MinerU 系列教程 第八课:Office 后端 - DOCX/PPTX 原生解析

MinerU 系列教程 第八篇 本篇教程将深入 Office 后端的原生文档解析机制。前三课分别剖析了 Pipeline、VLM、Hybrid 三种针对 PDF 的解析后端,而 Office 后端走了一条完全不同的路线 —— 直接从 DOCX/PPTX 的 XML 源码中提取结构化内容,无需 OCR、无需版面检测、无需任何 AI…...

Excalidraw虚拟白板工具:如何用5分钟开启你的手绘图表创作之旅?

Excalidraw虚拟白板工具:如何用5分钟开启你的手绘图表创作之旅? 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw 你是否厌倦了传统图表工…...

Omni-Vision Sanctuary 算法优化实战:提升模型推理与训练效率

Omni-Vision Sanctuary 算法优化实战:提升模型推理与训练效率 1. 引言:为什么需要算法优化 在计算机视觉领域,Omni-Vision Sanctuary模型因其强大的多任务处理能力而备受关注。但随着模型规模扩大和应用场景复杂化,算法工程师们…...

终极指南:如何用Win_ISO_Patching_Scripts快速制作集成最新补丁的Windows安装镜像

终极指南:如何用Win_ISO_Patching_Scripts快速制作集成最新补丁的Windows安装镜像 【免费下载链接】Win_ISO_Patching_Scripts Win_ISO_Patching_Scripts 项目地址: https://gitcode.com/gh_mirrors/wi/Win_ISO_Patching_Scripts 还在为手动集成Windows补丁而…...

速德瑞313/340/351nm紫外检测仪器全适配JJF 2132—2024

JJF2132—2024《荧光紫外灯人工气候老化试验装置校准规范》于2024年12月14日正式实施,核心监测波段升级为340nm、351nm、313nm,同时明确310通道和340通道监测要求。速德瑞准确响应新规,不仅推出匹配310/340nm波段的氙灯辐照计,更构…...

行业创新技术:区块链测试应用前瞻

当测试遇上区块链,质量保障的新边疆随着数字化转型的浪潮席卷全球,软件测试作为保障系统质量的关键环节,正面临着前所未有的挑战:数据真实性难以验证、跨系统协作流程追溯困难、安全审计要求日益严苛。与此同时,区块链…...

GMS基本测试命令

1. 跑签名报告申请白名单的命令:run gts -m GtsEdiHostTestCases -s run cts -m CtsCurrentApiSignatureTestCases -t android.signature.cts.api.SignatureTest#testSignature -s 【devicesID】2. 全跑CTS报告命令:run cts -s 【devicesID】3. 全跑STS…...