Selenium自动化(二)
Selenium 自动化二CSS Selector选择器选择单个元素选择所有元素选择所有的tag名为div的元素根据id选择元素根据class选择元素选择后代元素选择子元素最终选择元素3选择后代元素最终选择元素3支持复合写法选择class 值为 date 的 div 元素根据其他属性选择CSS 选择器支持通过任何属性来选择元素语法是用一个方括号 []选择特定范围选择属性值包含某个字符串的元素选择 a 节点里面的 href 属性包含 happy 字符串选择属性值以某个字符串开头的元素选择 属性值 以某个字符串 结尾 的元素组选择如同时选择tag名为div和class为happy的元素按次序选择子节点父元素的第n个子节点nth-child,选择所有位置为第2个的所有元素父元素的倒数第n个子节点nth-last-child选择倒数第2个子元素并且是span元素父元素的第几个某类型的子节点nth-of-type父元素的倒数第几个某类型的子节点nth-last-of-type奇数节点nth-child(odd)和偶数节点nth-child(even)父元素的某类型偶数节点nth-of-type(even)兄弟节点选择 相邻 所有~选择h3后面所有的兄弟节点span窗口切换选择框CSS Selector选择器选择单个元素find_element(By.CSS_SELECTOR,CSS Selector参数)选择所有元素find_elements(By.CSS_SELECTOR,CSS Selector参数)选择所有的tag名为div的元素elementsdriver.find_elements(By.CSS_SELECTOR,div)根据id选择元素elementdriver.find_element(By.CSS_SELECTOR,#id值)根据class选择元素elementsdriver.find_elements(By.CSS_SELECTOR,.class值)选择后代元素选择子元素最终选择元素3元素一元素2元素3选择后代元素最终选择元素3元素1元素2元素3支持复合写法选择class 值为 date 的 div 元素div.date根据其他属性选择CSS 选择器支持通过任何属性来选择元素语法是用一个方括号 []elementdriver.find_element(By.CSS_SELECTOR,[href])选择特定范围选择属性值包含某个字符串的元素选择 a 节点里面的 href 属性包含 happy 字符串a[href*happy]选择属性值以某个字符串开头的元素a[href^http]选择 属性值 以某个字符串 结尾 的元素a[href$cn]组选择如同时选择tag名为div和class为happy的元素div,.happy按次序选择子节点父元素的第n个子节点nth-child,选择所有位置为第2个的所有元素:nth-child(2)父元素的倒数第n个子节点nth-last-child选择倒数第2个子元素并且是span元素span:nth-last-child(2)父元素的第几个某类型的子节点nth-of-type:nth-of-type父元素的倒数第几个某类型的子节点nth-last-of-typespan:nth-last-of-type(2)奇数节点nth-child(odd)和偶数节点nth-child(even)p:nth-child(odd)父元素的某类型偶数节点nth-of-type(even)p:nth-of-type(odd)兄弟节点选择 相邻 所有~h3span选择h3后面所有的兄弟节点spanh3~span窗口切换# 在 HTML 语法中frame 元素或者 iframe 元素的内部会包含一个被嵌入的另一份 HTML 文档。要操作被嵌入的 HTML 文档中的元素就必须切换操作范围到被嵌入的文档中最外层的 HTML 称之为主 HTML。# 使用 WebDriver 对象的 switch_to 属性frame_reference 是 frame 元素的属性 name 或 ID。driver.switch_to.frame(frame_reference)# 切换回原来的主htmldriver.switch_to.default_content()# 切换到新窗口driver.switch_to.window(handle)# WebDriver 对象有 window_handles 属性这是一个列表对象里面包括了当前浏览器里面所有的窗口句柄句柄相当于对应网页窗口的一个 ID。forhandleindriver.window_handles:driver.switch_to.window(handle)ifbingindriver.title:break# 依次获取 wd.window_handles 里面的所有句柄对象并且调用 switch_to.window(handle) 方法切入到每个窗口然后检查里面该窗口对象的属性可以是标题栏地址栏判断是不是我们要操作的那个窗口如果是就跳出循环。# 返回到旧窗口。mainWindowdriver.current_window_handle driver.switch_to.window(mainWindow)选择框fromselenium.webdriver.support.selectimportSelect# radio 框及 checkbox 框都是 input 元素# radio 框radio 框选择选项直接用 WebElement 的 click 方法模拟用户点击# checkbox 框选中 checkbox 的一个选项必须先获取当前该复选框的状态先把已选中的点击下确保是未选状态再点击要选的# :checked 是 CSS 伪类选择表示选择 checked 状态的元素对 radio 和 checkbox 类型的 input 有效elementsdriver.find_elements(By.CSS_SELECTOR,#checkbox input[namedy]:checked)forelementinelements:element.click()driver.find_element(By.CSS_SELECTOR,#checkbox input[valuedy]).click()# select 框是 select 标签Selenium 专门提供了一个 Select 类进行操作实例化时传入 Select 元素对应的 WebElement 对象selectSelect(driver.find_element(By.ID,single))# Select类提供了常用的属性和方法all_selected_options,返回所有当前选中的option元素对应的WebElement对象foreleinselect,all_selected_options:print(ele.text)# select_by_value,根据选项的value属性值选择元素select.select_by_value(dy)# select_by_index根据选项的次序选择元素selenium4以上index从0开始# select_by_visible_text根据选项的可见文本选择元素# deselect_by_value根据选项的value属性值去除选中元素# deselevt_by_index根据选项的次序去除选中元素# deselect_by_visible_text根据选项的可见文本去除选中元素# deselect_all去除选中所有元素参考https://www.w3school.com.cn/cssref/css_selectors.asphttps://www.byhy.net/auto/selenium/frame/

相关新闻

【AI数字员工】Skills 市场与驾驶舱:构建开放共享的能力生态

【AI数字员工】Skills 市场与驾驶舱:构建开放共享的能力生态

🎯 核心观点:Skills市场让数字员工的能力可以「共享」——一个部门开发的优秀Skill,全公司都能用。驾驶舱让管理决策「数据化」——所有数字员工的运行状态、绩效表现、ROI贡献一目了然。员工市场:数字人才市场发现订阅需求闭环一…

2026/7/22 15:41:58 阅读更多 →
从GPU显存爆炸到CPU堆栈溢出,AI项目内存崩坏全路径追踪,7类典型场景+6款开源/商用工具横向评测

从GPU显存爆炸到CPU堆栈溢出,AI项目内存崩坏全路径追踪,7类典型场景+6款开源/商用工具横向评测

更多请点击: https://intelliparadigm.com 第一章:AI编程内存崩坏的底层机理与诊断范式 AI编程中内存崩坏并非偶然异常,而是模型训练、推理与系统资源协同失衡的必然产物。其根源深植于GPU显存管理机制、Tensor生命周期失控、异步计算队列溢…

2026/7/22 15:41:58 阅读更多 →
【多线程】多线程交互+生产者消费者案例

【多线程】多线程交互+生产者消费者案例

【多线程】多线程交互生产者消费者案例(1)wait、notify、notifyAll(2)生产者消费者问题(1)wait、notify、notifyAll wait方法和notify方法,并不是Thread线程上的方法,它们是Object上…

2026/7/22 15:41:58 阅读更多 →

最新新闻

3个实用技巧:让Sandboxie在Windows 11 24H2上重获新生

3个实用技巧:让Sandboxie在Windows 11 24H2上重获新生

3个实用技巧:让Sandboxie在Windows 11 24H2上重获新生 【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie 还记得第一次使用Sandboxie时的那种安心感吗?在沙箱中随意测试软件、浏览…

2026/7/22 16:22:34 阅读更多 →
磷酸丙糖异构酶活性检测:揭示糖酵解与光合作用碳代谢的核心枢纽

磷酸丙糖异构酶活性检测:揭示糖酵解与光合作用碳代谢的核心枢纽

磷酸丙糖异构酶(TPI)活性检测试剂盒(微量法)在能量代谢与光合生理研究中的前沿应用在细胞能量代谢的精密网络中,糖酵解途径(Glycolysis)是将葡萄糖分解为丙酮酸并产生ATP的核心通路。在这条途径…

2026/7/22 16:22:34 阅读更多 →
namae背后的技术:React组件设计与多平台API集成原理

namae背后的技术:React组件设计与多平台API集成原理

namae背后的技术:React组件设计与多平台API集成原理 【免费下载链接】namae ☕️ Grab a slick name for your new project 项目地址: https://gitcode.com/gh_mirrors/na/namae namae是一个帮助开发者快速检查项目名称在多平台可用性的工具,通过…

2026/7/22 16:22:34 阅读更多 →
RobotFramework自动化测试框架入门与实践

RobotFramework自动化测试框架入门与实践

1. RobotFramework自动化测试框架概述Robot Framework是一个基于Python的关键字驱动测试自动化框架,专为端到端验收测试(End-To-End Acceptance Test)和验收测试驱动开发(Acceptance-Test-Driven Development, ATDD)而…

2026/7/22 16:22:34 阅读更多 →
终极Flash模拟器Ruffle:3分钟复活经典动画游戏的完整指南

终极Flash模拟器Ruffle:3分钟复活经典动画游戏的完整指南

终极Flash模拟器Ruffle:3分钟复活经典动画游戏的完整指南 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle Flash内容在2020年正式退役后,数以百万计的动画、游戏和教…

2026/7/22 16:22:34 阅读更多 →
AI×低代码工作流:破解制造业数字化流程异构困局

AI×低代码工作流:破解制造业数字化流程异构困局

在制造业数字化转型的浪潮中,“流程异构”早已成为阻碍企业数智化升级的核心顽疾。从离散制造的多工序协同,到流程制造的全链路管控,不同产线、不同部门、不同系统之间的流程割裂,让数字化转型陷入“表面热闹、实质低效”的困境。…

2026/7/22 16:21:34 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻