zoukankan      html  css  js  c++  java
  • py+selenium 无法定位ShowModalDialog模态窗口【已解决】

    问题:无法定位弹出的模态窗口。

    前瞻

    模态窗口:关闭之前,无法操作其他窗口。

    但是selenium无法定位到这类窗口,百度说是目前selenium不支持处理模态窗口。

    目标:定位到窗口里面的元素,完成自动化测试。如图为目标窗口

    没办法,一定要过的坎。

    接下来开始骚操作一波~~

     既然是同个点击某个链接触发的窗口,那么就有这个思路: 获取这个链接→用新窗口的方式打开这个链接,绕过直接点击这个链接。

     

    业务:首先这个触发链接,是选择某条数据,点击查看手机号,故而弹出的模态窗口。

    所以,我先获取该数据的id,再加入该窗口触发进入的url,当然也可以写死直接赋值url,这样数据如果被删除了,或是被新建覆盖了,那就不好了,不灵活。最好还是取变量值,因为我对数据操作是默认列表第一条数据,即使是这条数据删除了,也会默认列表第一条数据进行操作,所以不直接写死。

    方法:

    1、获取该条数据的ID,由于业务上可以点击客户姓名进入查看信息页面,进而拿到url的id值,即为该条数据的ID。

    代码上,则是先进入查看信息页面,用driver.current_url获取当前url,然后再用urlparse进行url分解,取值。

    由于py3没有urlparse, 声明这句即可   from urllib import parse  ,然后调用parse里的parse_qs,如图。

     

     2. 获取完url,用+合并,然后再用execute_script执行js操作,打开一个新窗口。

     搞定!运行一下,这样就把原来的无法处理的模态窗口转化为普通的新窗口模式,继而通过切换窗口操作定位!!

     

     总结:可能其他人出现模态窗口的位置、业务等与我的例子不一样,我的例子只是给个思路,获取该窗口地址重新打开一个窗口!

    这样就可以绕过无法处理模态窗口的问题。

     如有错误,请指正,谢谢!

  • 相关阅读:
    安全学习工具和研究途径整理分享
    白帽黑客:如何用总裁的座机给你打的电话!
    渗透某公众号思路分享
    Exploit之初识Linux下缓冲区溢出
    应用密码学之从零开始③-密码学的数学基础其一
    关于finecms v5 会员头像 任意文件上传漏洞分析
    日志分析与splunk浅谈
    mbed试玩—高速开发MCU应用(基于FRDM-KL25Z)
    在DevExpress GridControl的一列中显示图片
    【BLE】CC2541之自己定义长短按键
  • 原文地址:https://www.cnblogs.com/4wheel/p/9400394.html
Copyright © 2011-2022 走看看