前言

部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不能用。

  • 有些弹出框是div层,这种跟平常定位方法一样

  • 有些弹出框是嵌套的iframe层,这种切换iframe就可以了

  • 有些弹出框比较坑,是嵌入的一个窗口,这就是本篇要讲的内容了。

遇到问题

1.最近有小伙伴遇到一个弹出框的定位,如下图这种,看似普通的一个弹出框

2.遇到这个问题做了以下尝试:

  • 首先,这种肯定不是alert,所以不能用alert去定位
  • 然后看看是不是有iframe,查看元素后,发现没有iframe
  • 前面加了sleep时间等待也无法解决

解决问题

1.通过打印获取全部的窗口,发现居然打印的是两个handle,也就是说,这个表面上看起来是一个窗口,实际上内嵌了另外一个窗口了。

# 作者:上海悠悠

# 打印所有的handle
all_handles = driver.window_handles
print(all_handles) # 切换到新的handle上
driver.switch_to.window(all_handles[1])

2.找到问题原因,接下来就简单了,先切换到新的窗口上,然后用平常的定位方法就可以了

selenium+python自动化95-弹出框死活定位不到的更多相关文章

  1. selenium - 弹出框死活定位不到

    先要确定是不是alert,是才能用,不是的话肯定不能用. 有些弹出框是div层,这种跟平常定位方法一样 有些弹出框是嵌套的iframe层,这种切换iframe就可以了 有些弹出框比较坑,是嵌入的一个窗 ...

  2. appium+python自动化98-非select弹出选择框定位解决

    前言 遇到问题:document.getElementsByClassName(...)[0] is undefined 选择框如果是select标签的,可以直接用select专用的方法去定位点击操作 ...

  3. Selenium基础知识(七)弹出框处理

    使用switch_to.alert方法来处理弹页面弹出的警告框 页面常见警告框种类:alert/confirm 确认框/prompt switch_to.alert().accept() switch ...

  4. python 异常和弹出框

    import tkinter.messagebox try: fileContent = open("abnormal.txt") fileContent.close() prin ...

  5. python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题

    Webdriver是基于浏览器操作的,当页面上传文件使用的是flash的控件SWFFileUpload调用的时候,调用的是系统底层的文件选择弹出框 这种情况,Webdriver暂时是不支持除页面外的其 ...

  6. appium 定位弹出框时报错

    今天在做APP自动化时,发现定位弹出框无法定位,无奈,百度去找.发现了一篇不错的博客,故转载过来,供大家参考.后续会验证这个方法的可行性. 本博客转自:http://blog.csdn.net/qq7 ...

  7. ElEmentUI选择器弹出框定位错乱问题解决(弹出框出现在左上角)

    这个是原问题,我之前是没问题的,后来的突然出现了这个问题,查了好多没找到,后来看文档才发现的.通过这个问题,说明看文档的重要性,嘻嘻 解决办法是在选择器里插入一个 :popper-append-to- ...

  8. Python+Selenium笔记(九):操作警告和弹出框

    #之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一 ...

  9. 【Python+selenium Wendriver API】之操作警告和弹出框

    参考文章: <Python+Selenium笔记(九):操作警告和弹出框>

随机推荐

  1. opencv-原图基础上添加指定颜色

    前言 项目中需要将某些区域使用不同的颜色表示出来,同时能够看到原图作为底色. 代码 #include "opencv2/highgui/highgui.hpp" #include ...

  2. opencv-python教程学习系列1-安装库

    前言 以后的项目可能会用到python和opencv进行实现,故准备opencv-python教程学习系列记录学习过程的点滴,这是这一系列的开篇,坚持学习,共同进步. 系列教程参照OpenCV-Pyt ...

  3. HDU2034:人见人爱A-B

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...

  4. vim golang 插件

    最好用的vim golang 插件 可自动缩进 git clone git@github.com:aimin/InstallvimGo.git

  5. MSMQ-发送消息到远程专用队列path格式

    在工作组模式下,远程访问专用队列.在网上找到一篇文章,翻译了一下. 最后结论,直接使用多元素格式名方式,利用IP地址直接对单个或多个目标发送消息      MessageQueue rmQ = new ...

  6. sql server 阻塞与锁

    SQL Server阻塞与锁 在讨论阻塞与加锁之前,需要先理解一些核心概念:并发性.事务.隔离级别.阻塞锁及死锁. 并发性是指多个进程在相同时间访问或者更改共享数据的能力.一般情况而言,一个系统在互不 ...

  7. 顶级域名和子级域名之间的cookie共享和相互修改、删除

    举例: js 设置 cookie: domain=cag.com 和 domain=.cag.com 是一样的,在浏览器cookie中,Domain都显示为 .cag.com. 就是说:以下2个语句是 ...

  8. 两数之和 Two Sum

    给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 n ...

  9. php如何分割字符串?php mb_substr分割字条串,解决中文乱码问题,支持分割中文! (转)

    因为网站开发需要,必须有一项功能可以把字符串一个一个分割开来,并且转换为数组. 刚开始用“str_split函数”在实验分割中文字符时就出现了乱码. 蚂蚁学院经过一翻研究,最终发现以下方法可以有效分割 ...

  10. vs 2017/2015/2013 如何定位C++内存泄漏

    定位内存泄漏是C++的一个大问题 我们可以通过如下方式进行定位: //在主函数文件中加入如下代码 #include <stdlib.h> #include <crtdbg.h> ...