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操作,打开一个新窗口。

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

     

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

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

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

  • 相关阅读:
    03_02_leetcode_24_删除有序数组的重复项
    03_02_leetcode_141_环形链表
    03_02_leetcode_24_两两交换链表中的结点
    Solution -「ZJOI 2014」力
    Solution -「GXOI / GZOI 2019」宝牌一大堆
    Solution -「CSP 2019」Centroid
    Solution -「CSP 2019」Partition
    Note -「Suffix Automaton」SAM
    Solution -「BalticOI 2004」Sequence
    Solution -「BZOJ 3779」重组病毒
  • 原文地址:https://www.cnblogs.com/4wheel/p/9400394.html
Copyright © 2011-2022 走看看