javascript - 如何在 Selenium Python 中处理模态框或弹出框
问题描述
我正在使用 selenium python 来测试餐厅 pos 系统。
点击不同的类别菜单后,会弹出大约3种不同的弹出(模态)窗口,允许自定义选择项目。不同的类别会弹出不同的弹出(模态)窗口。
类别菜单代码为:
<div id="iopopsz" style="display: none">
<div style="display:flex">
...code..
</div>
</div>
<div id="comboitemsz" class="copt" style="display: none;">
<div style="display: flex">
...code..
</div>
</div>
<div id="mcoption8sz" class="copt" style="display: none;">
<div style="display: flex">
...code..
</div>
</div>
如您所见,有一个style="display: none;" 在每个类别中,如果未选择类别,则样式的值将保持显示:无,
选择类别后,样式的值将更改为display:block。
现在我需要先检查弹出哪个弹出(警报)窗口,然后切换到窗口单击一个项目。那我该怎么办?有朋友可以帮忙吗?
解决方案
我认为你可以用它get_attribute("style")
来完成你在这里尝试做的事情。据我所知,您实际上并没有使用真正的警报——警报是一个没有 HTML 的 Javascript 弹出窗口,只能通过警报类接受或关闭。
以下是检查每个元素中的display: none
和字符串的方法:display: block
first_item = driver.find_element_by_id("iopopsz")
style_attr_first_item = first_item.get_attribute("style") # "display: none"
if "display: none;" in style_attr_first_item:
print("First item is not visible.")
希望这可以帮助您入门,并向您展示如何有效地检查每个元素的display: none
和display: block
属性。
推荐阅读
- winforms - Syncfusion.Pdf.WinForms nuget包可以免费使用吗?
- node.js - 节点js ubuntu bin文件夹丢失
- java - 如何在 java 中使用 spark 从 AWS S3 读取 .xls 文件?并且无法读取 sheetName
- php - 如何在 PHP 中侦听 udp 端口并将日志写入文本文件?
- visual-studio - 文件未签入,在 TFS 中
- matlab - Matlab方法作为属性
- asp.net - 无法修复 Global.asax 错误:“无法加载类型 'ApplicationName.Global”
- javascript - 确保桌面上有后退按钮(Windows 10)PWA
- c# - Google Contacts API - PostalAddress Country not working set value
- linux - 从 gitlab docker runner 启动 Sonar Scanner