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

前瞻

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

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

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

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

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

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

py+selenium 无法定位ShowModalDialog模态窗口【已解决】的更多相关文章

  1. py+selenium 老是定位不到文本内容【已解决】

    问题:定位不到文本内容,路径也正确,该加frame也有加,等待时间也够长 测试: 上图看不出差异,但是测试1就定位得到,测试2就定位不到,为什么? 看下图就知道了 区别就在于,测试2后面多了个空格!! ...

  2. py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】

    问题:定位不到元素,但却不报错或者出现报错AttributeError: 'list' object has no attribute 'click' 如图  或者  解决方法:   将”driver ...

  3. py+selenium IE 定位到元素,但点击不了元素的问题【已解决】

    目标:定位到[网点大客户清单],并点击该链接 问题:可以定位到元素id,但一直click不了 页面目标元素部分源码:  自动化源码: 进入frame后,可以定位到id,但点击不了  解决方法: 调用执 ...

  4. 模态窗口showModalDialog的浏览器兼容解决方案【改】

    将代码中原来的 window.showModalDialog 全部替换成: showModalDialogN 然后增加方法: function showModalDialogN(uri, args, ...

  5. 模态窗口用webdriver定位不到,可用java+sikuli实现

    一.安装sikuli(参见:http://lijunwei1228ok.blog.163.com/blog/static/97383797201311279595821/) 1.官网:http://w ...

  6. JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    一.Iframe 篇 公共部分 //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID function GetValue(ObjectID,ContentID) { ...

  7. 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    一.Iframe 篇 //&&&&&&&&&&&&&&&&&&a ...

  8. robotframework+Selenium2Library 模态窗口的处理

    原文链接:https://www.cnblogs.com/zuola/p/5750018.html   所谓模态窗口,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框. ...

  9. 总结js(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    http://hi.baidu.com/yashua839/blog/item/131fdb2fe547ef221f3089af.html一.Iframe 篇 //&&&&am ...

随机推荐

  1. GIS基础软件及操作(五)

    原文 GIS基础软件及操作(五) 练习五.空间分析的基本操作 空间分析的基本操作 空间分析模块 空间分析是基于地理对象的位置和形态的空间数据的分析技术,其目的在于提取和传输空间信息.空间分析是地理信息 ...

  2. win10 应用商店/相机/计算器误删后的修复方法

    “以管理员身份运行”Windows Powershell. 然后在打开的“管理员:Windows Powershell”窗口中输入以下重装应用商店的命令: //商店恢复 Get-AppXPackage ...

  3. 给变量赋值,程序会跳到 HardFault_Handler的问题

    原因:变量属于指针,该指针没有初始化

  4. c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html 已经刷了很多篇leetcode题了,不过最近在找c++的实习工作(大佬 ...

  5. 快速删除mysql表中的数据

    一.清空全部数据,不写日志,不可恢复,速度很快 truncate table 表名; 二.清空全部数据,写日志,可恢复,速度很慢 delete from 表名;

  6. 我整理的一份来自于线上的Nginx配置(Nginx.conf),希望对学习Nginx的有帮助

    我整理了一份Nginx的配置文件说明,是真正经历过正式线上考验过.如果有优化的地方,也请朋友们指点一二,整理出一份比较全而实用的配置. 主要包含配置:负载均衡配置,页面重定向,转发,HTTPS和HTT ...

  7. 浏览器中查看HTTP的头部文件

    本文以chrome浏览器为例,来讲解下在浏览器中,如何查看http的头部文件. 1.打开chrome浏览器,输入地址,如下图所示. 2.鼠标右击,在右键菜单中选择[检查],如下图所示. 3.选择“Ne ...

  8. HBase 学习之路(四)—— HBase集群环境配置

    一.集群规划 这里搭建一个3节点的HBase集群,其中三台主机上均为Regin Server.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002上部署备用的 ...

  9. appcan 多按钮提示框

    使用  appcan.window.alert EG: var btnList=new Array(); btnList[0]="确认"; btnList[1]="取消& ...

  10. Unity Shader 屏幕后效果——颜色校正

    屏幕后效果指的是,当前整个场景图已经渲染完成输出到屏幕后,再对输出的屏幕图像进行的操作. 在Unity中,一般过程通常是: 1.建立用于处理效果的shader和临时材质,给shader脚本传递需要控制 ...