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

selenium 特殊场景处理

文章目录

  • 前言
  • 一、windows的弹窗
  • 二、内嵌网页 frame
  • 三、页签切换
  • 四、截图
  • 五、弹窗
  • 六、JS执行
  • 总结


前言

selenium处理web操作师,有很多特殊的情况需要处理,例如弹窗、内嵌网页,页签切换,js执行等,下面介绍一些可能会遇到的特殊场景


一、windows的弹窗

import win32com.client'''
创建了一个 WScript.Shell COM (Component Object Model) 对象的实例。WScript.Shell 
提供了一系列的方法和属性,可以让你执行各种与 Windows Shell 相关的操作,
比如运行应用程序、读取系统环境变量、创建快捷方式等。
'''
sh = win32com.client.Dispatch("wScript.shell")# 因为windows的弹窗脱离了web ,只能使用系统的阻塞
time.sleep(5)# 在windows的输入框内输入内容,通过\r\n 模拟回车(在路径外边)
# 用空格 区分多个文件
sh.send_keys('"D:/api/a.png"\r\n')

--------------------------------------------------------------✂------------------------------------------------------------------------------------

二、内嵌网页 frame

# 内嵌frame 处理
# 先定位到frame这个元素
ele = driver.find_element(By.CSS_SELECTOR, "#frame_id")# 切入内嵌网页
driver.switch_to.frame(ele)# 获取frame里的元素
driver.find_element(By.CSS_SELECTOR, "#element_id").send_keys("123")# 跳出frame
driver.switch_to.default_content()

--------------------------------------------------------------✂------------------------------------------------------------------------------------

三、页签切换

# 获取所以的网页页签
win_sli = driver.window_handles# 遍历,切换到目标页签就停止
for win in win_sli:driver.switch_to.window(win)if driver.title == "测试项目xxx":break

--------------------------------------------------------------✂------------------------------------------------------------------------------------

四、截图

# 截网页全屏,官方建议为 png
driver.get_screenshot_as_file("./a.png")# 获取元素,截取元素范围的图片,如果元素没出来就截屏,那么就等待
element = driver.find_element(By.XPATH, "//span[@class='login-btn']")
element.screenshot("./p.png")

--------------------------------------------------------------✂------------------------------------------------------------------------------------

五、弹窗

'''
弹窗处理
'''
# 获取对话框对象
al = driver.switch_to.alert
# 选中确认
al.accept()
# 取消
al.dismiss()
# 输入内容 可能会不显示数据,可以自己通过控制台确认
al.send_keys("123")

--------------------------------------------------------------✂------------------------------------------------------------------------------------

六、JS执行


'''
一般先使用selenium 如果说有其他的情况js更加方便,则使用js
同样的定位方式,selenium和js一样快
除了ById其他的返回的都是函数
可以和selenium一样进行元素操作,只是函数不一样
document.querySelector("这里填css表达式")
document.getElementById("根据id寻找元素")
document.getElementsByClassName("根据class属性寻找元素,返回的是列表-但不是python的列表,需要自己处理后返回)
document.getElementsByClassName()[1]document.getElementsByName("根据name属性寻找元素")
document.getElementsByTagName("")
document.querySelector("这里填css表达式").click()
document.getElementsByName("keywords")[o].value='123'   --赋值document.getElementById("id").removeAttribute("herf") --移除元素const element = document.getElementById('myButton'); --获取元素element.setAttribute('title', '这是一个按钮提示'); --设置标准属性element.setAttribute('data-id', '12345'); ----设置自定义属性 (data-*)
element.setAttribute('data-category', 'electronics');element.setAttribute('disabled', '');  --设置布尔属性 (如 disabled, checked)'''

--------------------------------------------------------------✂------------------------------------------------------------------------------------

总结

记录一下一些特殊情况的处理,后续会继续补充。

http://www.lryc.cn/news/603052.html

相关文章:

  • 刘润探展科大讯飞WAIC,讯飞医疗AI该咋看?
  • CSP-J 2022_第三题逻辑表达式
  • 技术工具箱 |五、一个避免头文件重复引用的 Python 脚本
  • 嵌入式Linux:注册线程清理处理函数
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:硬件编程原理、基于SDK库函数编程、软件固化
  • 第五章:进入Redis的Hash核心
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 深度研究——OpenAI Researcher Agent(使用OpenAI Agents SDK)
  • EAP(基于事件的异步编程模式)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘papermill’问题
  • 时间数字转换器TDC的FPGA方案及核心代码
  • 将 NI Ettus USRP X410 的文件系统恢复出厂设置
  • C#:基于 EF Core Expression 的高性能动态查询构建实战 —— 面向大数据量环境的查询优化方案(全是干货,建议收藏)
  • Day22-二叉树的迭代遍历
  • 代码随想录Day32:动态规划(斐波那契数、爬楼梯、使用最小花费爬楼梯)
  • 10:00开始面试,10:06就出来了,问的问题有点变态。。。
  • Jmeter 性能测试监控之ServerAgent
  • AT89C 系列单片机知识点总结
  • 基于VHDL的神经网络加速器设计实战
  • 基于亮数据 MCP 的 Trae 智能体,让规模化 Google 数据实时分析触手可及
  • DBAPI的SQL实现模糊查询的3种方案
  • git相关操作记录
  • C++初学者4——标准数据类型
  • Day 24:元组与os模块
  • STM32F4—电源管理器
  • 新华三H3CNE网络工程师认证—Telnet
  • 在 CentOS 中安装 MySQL 的过程与问题解决方案
  • 每日面试题16:什么是双亲委派模型
  • LINUX 728 SHELL:grep;sort;diff
  • mp核心功能