js关闭iframe窗口_[Selenium]24.处理弹窗新式的模态窗口

a25e1544088b29844e945b5395d09799.png

场景

页面上弹出的对话框是自动化测试经常会遇到的一个问题。很多情况下这个弹出的对话框是一个iframe,处理起来有点麻烦,需要进行switch_to操作. 请参考文章

测试曾哥:[Selenium]23.对话框的处理​zhuanlan.zhihu.com
7df80ed29e27abddbe35f98549ef50af.png

但现在很多前端框架的对话框都是div形式的,这就让我们的处理变得十分简单了。

处理对话框一般会做下面的一些事情

  • 打开对话框
  • 关闭对话框
  • 操作对话框中的元素

代码

modal.html

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>modal</title>		<script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />		<script type="text/javascript">$(document).ready(function(){$('#click').click(function(){$(this).parent().find('p').text('try watir-webdriver right now!');});});</script></head><body><h3>modal</h3><div class="row-fluid"><div class="span6">		<!-- Button to trigger modal --><a href="#myModal" role="button" class="btn btn-primary" data-toggle="modal" id="show_modal">Click</a><!-- Modal --><div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="myModalLabel">Modal header</h3></div><div class="modal-body"><p>watir-webdriver is better than slenium-webdriver</p><a href="#" id="click">click me</a></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Close</button><button class="btn btn-primary">Save changes</button></div></div></div>		</div>		</body><script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script></html>

modal.py

# -*- coding: utf-8 -*- 
from selenium import webdriver
from time import sleep
import os
import selenium.webdriver.support.ui as ui
if 'HTTP_PROXY'in os.environ: del os.environ['HTTP_PROXY']dr = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('modal.html')dr.get(file_path)# 打开对话框
dr.find_element_by_id('show_modal').click()wait = ui.WebDriverWait(dr, 10)
wait.until(lambda dr: dr.find_element_by_id('myModal').is_displayed())# 点击对话框中的链接
# 由于对话框中的元素被蒙板所遮挡,直接点击会报 Element is not clickable的错误
# 所以使用js来模拟click
# 在watir-webdriver中只需要fire_event(:click)就可以了
link = dr.find_element_by_id('myModal').find_element_by_id('click')
dr.execute_script('$(arguments[0]).click()', link)
sleep(2)# 关闭对话框
buttons = dr.find_element_by_class_name('modal-footer').find_elements_by_tag_name('button')
buttons[0].click()dr.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 暂停其他app的声音_【一万个APP】第二十二期潮汐

基本信息分类:健康健美版本:Android-2.5.3 IOS-2.5.2更新时间:Android:2019.02.26 IOS:2019.03.06IOS评分(N/H):4.9/4.9开发商: 广州多少网络科技有限公司官方网站: https://tide.moreless.io/Android下载量:13,960,000IOS同类排名:52体验版本: Android-2.5.3PS&#xff1a;最近…

c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串

题目题解暴力法我们根据回文字符串特点进行判断一个字符串是不是回文。// 回文子串&#xff1a;首尾对称相等const isPalindrome s > { // abba aba for (let i 0; i < Math.floor(s.length / 2); i) { if (s[i] ! s[s.length - 1 - i]) { ret…

random list随机生成不重复数

有一个需求&#xff0c;需要随机生成六位数&#xff0c;从100001 ---999999但是又要不重复&#xff0c;且不影响性能。如果每次生成都去判断是否重复&#xff0c;当生成的次数足够多&#xff0c;会影响性能。我想的是开一条线程&#xff0c;提前去处理。 提前生成好随机的数。直…

django 默认查询条件_Python之Django系列-创建第一个应用-4

上一篇&#xff1a;Python之Django系列-创建第一个应用-3 上一篇文章我们介绍了创建项目&#xff0c;打开浏览器访问http://127.0.0.1:8000/polls/&#xff0c;能看见"投票主页视图"等描述。本篇文章我们接着上一篇文章继续学习&#xff0c;在Python之Django系列-初始…

Exception in thread “main“ java.lang.IllegalArgumentException: Illegal Capacity: -1

创建list集合下标超出。 模拟场景 我是由于创建list &#xff0c;大小的时候&#xff0c;写反了

三相同步电机怎么接线图_智能电表怎么接线 单相 三相电表接线图大全

电表分为单相电表和三相电表&#xff0c;接线方法又为直入式和互感式&#xff0c;现在我们分电表种类和接线方法&#xff0c;来讲解电表接线。单相电表直入式接线方法&#xff1a;家用单相电表的接线必须是左火L&#xff0c;右零N&#xff0c;左边火线进&#xff0c;火线出&…

window navicat连接阿里云服务器mysql步骤及常见问题

先登录自己的阿里云服务器 这有两个比较重要的&#xff0c;一个是配置出口端口&#xff0c; 还有一个就是拿到自己的公网ip 连接上服务器 我用的是finalshell 工具连接。 主要是基于docker安装mysql &#xff0c;现在我的服务器docker已经安装了&#xff0c;安装也很简单。网…

docker安装mysql并使用navicat连接

创建映射目录&#xff0c;我安装在用户目录下 mkdir ~/mysql mkdir ~/mysql/conf mkdir ~/mysql/logs mkdir ~/mysql/data 分别执行以上命令&#xff0c;创建文件目录 #启动 docker run -id \ -p 3306:3306 \ --namemysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/lo…

linux centos7下载安装zlib

安装nginx 缺少zlib依赖&#xff0c;由于各种环境无法拉取yum安装&#xff0c; yum安装 yum install -y zlib zlib-devel 手动安装 zlib 版本预览 Index of /fossilshttp://www.zlib.net/fossils/ 解压 tar -zxvf zlib-1.2.8.tar.gz 进入加压后的文件 cd zlib-1.2.8 执行…

idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?

北京时间6月23日凌晨1点&#xff0c;苹果在线上举行了WWDC 2020全球开发者大会。给我们正式带来了iOS 14&#xff0c;并且在凌晨3点半时的时候&#xff0c;苹果发布 iOS 14 beta 内测版系统&#xff0c;并提供内测升级方法&#xff0c;随后很多用户已经升级体验。但是尝鲜之后&…

【pcre 依赖】linux安装pcre 依赖

记录转载 一、pcre PCRE(Perl Compatible Regular Expressions)是一个轻量级的Perl函数库&#xff0c;包括 perl 兼容的正则表达式库。它比Boost之类的正则表达式库小得多。PCRE十分易用&#xff0c;同时功能也很强大&#xff0c;性能超过了POSIX正则表达式库和一些经典的正则…

java和c++的区别大吗_小自考本科含金量高吗?小自考和大自考有什么区别?

随着成人教育的普及&#xff0c;自考学历变得越来越常见。但是很多人不知道自学考试考分为小自考和大自考&#xff0c;那么小自考和大自考的区别在哪里&#xff1f;小自考本科的含金量高吗&#xff1f;一、小自考本科的含金量高吗&#xff1f;很多人都想知道小自考本科的含金量…

高德地图JSAPI 2.0使用Java代码代替Nginx进行反向代理产生CORS跨域

解决前端访问高德产生的啥啥啥问题&#xff0c;反正问题交给后端做了&#xff0c; 解决高德代理连接&#xff1a; 高德地图JSAPI 2.0使用Java代码代替Nginx进行反向代理https://blog.csdn.net/shechaojin/article/details/126267635?ops_request_misc%257B%2522request%255Fi…

记录生产其妙BUG

奇妙bug本地复现不了&#xff0c;sit环境有问题&#xff0c;最后才发现本地一毫秒处理三十多条数据&#xff0c;所以每隔三十多秒就会有不同的时间&#xff0c;服务器每秒处理数量超过了预期数量&#xff0c;所以sit很容易复现 由于使用lindorm存在诸多限制。有一个业务数据量…

计算页数_中级会计师计算题、综合题的审题注意事项与解题思路

为什么要进行考前冲刺根据多年的考试和培训经验&#xff0c;考前过一遍课本是必须的&#xff0c;且提分相当明显。换种解释方式如果平时测试在40分左右的同学通过最后一个月的冲刺考过的概率能增加65%以上&#xff0c;但最后一个月抓不住机会就只能搁置到明年再考。时不待我&am…

使用中断后不停止_仓鼠偷吃鼠粮,被发现后立刻停止,但鼠鼠满脸不情愿

贪玩馋嘴&#xff0c;是很多宠物的天性&#xff0c;在主人不在家的时候&#xff0c;往往是它们暴露本性的时候。提起贪玩&#xff0c;人们往往会想到哈士奇&#xff0c;因为它们能在主人不在家的时候&#xff0c;把整个屋子给拆了&#xff1b;而提起贪吃&#xff0c;仓鼠却总被…

记录分库分表的分页查询

分库分表的分页查询。不同的业务场景可能不同。我只记录自己的分页方法 public PageAO<User> selectByPage(Filter filter, int page, int size) {//每页条数int pageSize size < 1 ? 10 : size;//计算起始位置int pageIndex page < 1 ? 0 : (page - 1) * pag…

c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...

源码 DelSomeFile.py""" 此代码用于删除文件夹下面以txt结尾的文件 &#xff08;同理将.txt-->.py可以删除py文件&#xff09; 借用pyqt5调用文件选择对话框看起来比较人性化点 本来是用win32ui的&#xff0c;但是win32ui不太人性化&#xff0c;不能选择文件…

creo组装后怎样移动元件_BGA元件SMT装配工艺要点简介

当SMT&#xff08;表面贴装技术&#xff09;/SMD&#xff08;表面贴装器件&#xff09;从业者发现间距为0.3mm的QFP&#xff08;四方扁平封装&#xff09;无法实现时&#xff0c;BGA&#xff08;球栅阵列&#xff09;的出现肯定会减少装配缺陷确保SMT质量成就。从系统理论的角度…

burpsuite csrf攻击_WEB安全之CSRF

大家好&#xff0c;我是阿里斯&#xff0c;一名IT行业小白。今天分享的内容是CSRF相关知识&#xff0c;不求表哥们打赏&#xff0c;只求点点在看&#xff0c;点点转发。CSRF漏洞概述CSRF(Cross-Site Request Forgery),中文名为跨站请求伪造&#xff0c;是一种Web攻击方式。该漏…