selenium 特殊场景处理

文章目录


前言

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


一、windows的弹窗

python 复制代码
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

python 复制代码
# 内嵌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()

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

三、页签切换

python 复制代码
# 获取所以的网页页签
win_sli = driver.window_handles

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

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

四、截图

python 复制代码
# 截网页全屏,官方建议为 png
driver.get_screenshot_as_file("./a.png")

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

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

五、弹窗

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

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

六、JS执行

python 复制代码
'''
一般先使用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)



'''

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

总结

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

相关推荐
测试19988 小时前
如何学习自动化测试?
自动化测试·软件测试·python·学习·测试工具·职场和发展·测试用例
卓码软件测评9 小时前
CNAS软件测试机构:【Postman集合从接口组织到自动化测试套件的过程】
网络·测试工具·性能优化·测试用例·压力测试·postman
测试人社区—527210 小时前
无需修改测试用例实现Selenium四倍性能提升的完整方案
selenium·测试工具·测试用例
谷粒.12 小时前
Cypress vs Playwright vs Selenium:现代Web自动化测试框架深度评测
java·前端·网络·人工智能·python·selenium·测试工具
斯南19 小时前
wireshark的基本使用,过滤请求,过滤数据,追踪数据
网络·测试工具·wireshark
十二测试录21 小时前
用F12获取接口信息,并进行接口测试
经验分享·功能测试·测试工具·压力测试·职场发展·安全性测试
卓码软件测评1 天前
第三方软件测试评测机构:【基于Scala DSL的Gatling脚本开发:从零开始构建首个负载测试模型】
后端·测试工具·测试用例·scala·负载均衡·压力测试
川石课堂软件测试1 天前
自动化测试的基本概念及常用框架
数据库·python·功能测试·测试工具·单元测试·自动化·流程图
测试19981 天前
简单的Web UI自动化测试框架Java实现
自动化测试·软件测试·selenium·测试工具·ui·职场和发展·测试用例
程序员小远1 天前
Selenium自动化测试之弹窗处理
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例