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

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

 

 

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

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

 

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

 

posted @ 2018-08-01 14:56  怪盗积德  阅读(449)  评论(0编辑  收藏  举报