javascript - 如何在 Selenium Python 中处理模态框或弹出框

标签 javascript python selenium selenium-chromedriver

我正在使用 selenium python 来测试餐厅 pos 系统。

点击不同的类别菜单后,会弹出大约3种不同的弹出(模态)窗口,以允许自定义选择项目。不同的类别会弹出不同的弹出(模态)窗口。

enter image description here

类别菜单代码为:

<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>

可以看到,每个category中都有一个style="display: none;",如果没有选中该category则style的值将保持display: none强>,

选择类别后,style 的值将更改为 display:block

现在我需要先检查弹出的是哪个弹出(警报)窗口,然后切换到该窗口单击某个项目。那么我应该做什么?有 friend 可以帮忙吗?

最佳答案

我认为您可以使用 get_attribute("style") 来完成您在此处尝试执行的操作。据我所知,您实际上并没有使用真正的警报 - 警报是一个没有 HTML 的 Javascript 弹出窗口,只能通过警报类接受或消除。

以下是检查每个元素中的 display: nonedisplay: 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: nonedisplay: block 属性。

关于javascript - 如何在 Selenium Python 中处理模态框或弹出框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59537965/

相关文章:

javascript - 确定 jQuery 中是否隐藏了任何 div

javascript - 如何使用selenium python点击链接

python - 如何获取pandas数据框中前一列的值?

python - 在 Python 中使用 Kmode 和大 csv 文件

python - 我无法制作 1x1 矩形

php - 使用 Facebook PHP WebDriver 在 Selenium 中执行 javascript

python - 如何在Python中获取下载按钮的url并读取CSV文件?

javascript - 使用 typescript 是否会提示浏览器比普通 JS 更快地将脚本编译为字节码?

javascript - JavaScript 中数组是如何实现的?那些好的旧 list 怎么了?

javascript - WKWebView 在加载任何 URL 时阻止某些脚本(阻止任何网站中的跟踪或广告)