python selenium UI自动化操作iframe及返回默认页面
页面操作的场景:进到到页面A,选择页面A里面的记录,点击签约, 弹出一个弹窗B,弹窗B的内容是协议及同意按钮或其他非同意的提示信息,主要的操作,打开页面A,点击签约,点击同意,操作完成
分析页面的组成,弹窗B在页面A里面,不过弹窗B是iframe,即嵌套在html页面里面的html,如果不做iframe切换,无法操作弹窗B里面的同意按钮,提示找不到元素,所以操作弹窗B里面的同意按钮前,要先切换到iframe,大致关系如下图:
切换到iframe的代码,EC.frame_to_be_available_and_switch_to_it(loc) 等待iframe出现,并切换到iframe
def switch_iframe(self, loc, model):
'''
# html再嵌套了html,就需要先切换到iframe,才能对里面的元素进行操作
:param loc: 即iframe的元素属性
:param model:
:return:
'''
mylog.info("切换到模块{0}的_{1}iframe".format(model, loc))
WebDriverWait(self.driver, timeout=10).until(EC.frame_to_be_available_and_switch_to_it(loc))
完整的页面操作代码
def sign(self, shopname):
'''
【签约操作】判断通联协议是否出现,已出现进入签约操作,签约操作是放在iframe里面,要切换到iframe,进行操作
签完一家店铺后,关闭弹窗,切换回,默认的html页面,进行下一次的签约操作
'''
# 同意通联协议的操作
res = self.wait_eleVisibility(loc=sf.xiey_tap, timeout=8, poll_frequency=0.2)
if res:
# 要切换到iframe进到这个页面进行操作
self.switch_iframe(loc=sf.agree_ifarme, model="切换到签约iframe")
try:
WebDriverWait(self.driver, timeout=8, poll_frequency=0.2).until(EC.visibility_of_element_located(sf.agreed_input))
self.scroll_into_view_and_click(loc=sf.agreed_input, model="点击同意协议")
mylog.info("{0}_点击同意协议".format(shopname))
except Exception as e:
# 过滤已经提交了签约记录的店铺,并记录店铺和具体的错误信息
flase_txt = self.get_element_text(loc=sf.user_not_exist, model="获取失败的提示")
mylog.exception("{0}_{1}_签约失败".format(shopname, flase_txt))
time.sleep(1)
# 切换回主界面
self.switch_default_content()
self.scroll_into_view_and_click(loc=sf.xiey_tap, model="移动到签约页面顶部")
self.scroll_into_view_and_click(loc=sf.close_alert, model="关闭通联弹框")
else:
mylog.exception("签约页面未出现")
切换回默认的html页面
def switch_default_content(self):
'''
# 操作完iframe后,切换回默认的html页面,如果现在那一层的iframe,只需要执行一次,就可以返回到默认的html页面
:return:
'''
mylog.info("切换到默认的html页面")
self.driver.switch_to_default_content()
python selenium UI自动化操作iframe及返回默认页面的更多相关文章
- Selenium UI自动化解决iframe定位问题
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6735116.html 一个阴雨霏霏 ...
- 自动化测试系列:Selenium UI自动化解决iframe定位问题
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6735116.html 一个阴雨霏霏 ...
- python+selenium UI自动化不同浏览器之间的切换
class register(): ROBOT_LIBRARY_SCOPE = 'GLOBAL' def __init__(self): pass # m默认打开chrome def open_bro ...
- Python实现浏览器自动化操作
Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼ 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...
- [转载]Python实现浏览器自动化操作
原文地址:Python实现浏览器自动化操作作者:rayment 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...
- 使用appium+python做UI自动化的demo
使用appium+python做UI自动化的demo 案例使用的知乎app,下载最新的知乎apk,存在了电脑上,只需要配置本机上app目录,不需要再配置appPackage和appActivity # ...
- python selenium 基本常用操作
最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要.因本人水平有限,有不对之处多多包涵!欢迎指正! 一.xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css ...
- 使用python selenium进行自动化functional test
Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...
- python+ selenium&APPium自动化 page Object 设计模式
题记: 之前公司项目比较稳定, 在进行了系统测试,想用自动化测试进行冒烟测试,或者对主要功能进行测试, 因此用到了PO模式 因此做个记录: Page Object Page Object模式是使用Se ...
- python selenium鼠标键盘操作(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...
随机推荐
- WPF 项目文件不加 -windows 的引用 WPF 框架方式
默认情况下的 WPF 项目都是带 -windows 的 TargetFramework 方式,但有一些项目是不期望加上 -windows 做平台限制的,本文将介绍如何实现不添加 -windows 而引 ...
- WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流
这是在 GitHub 上有小伙伴报的问题,在 WPF 中,不支持调用 BitmapDecoder.Create 方法,传入的 FileStream 是配置了 FileOptions.Asynchron ...
- Java中使用try代码块自动关闭各种流(IO流……)
推荐写在 try 的括号中 /** 方式一.方式二是等价的 * <li>推荐使用方式一</li> * @since 2023/5/18 0018 * @author CC ** ...
- .Net 8.0 下的新RPC,IceRPC之如何创建连接connection
作者引言 很高兴啊,我们来到了IceRPC之如何创建连接connection,基础引导,让自已不在迷茫,快乐的畅游世界. 如何创建连接connection 学习如何使用IceRPC,创建和接受连接. ...
- CentOS-7卸载了python2.7,yum不可用的解决方法
1.mount挂载iso镜像 [root@localhost software]# mount -t iso9660 -o loop CentOS-7-x86_64-DVD-2003.iso /med ...
- 九、.net core(.NET 6)添加通用的Redis功能
.net core 编写通用的Redis功能 在 Package项目里面,添加包:StackExchange.Redis: 在Common工具文件夹下,新建 Wsk.Core.Redis类库项目,并 ...
- java学习之旅(day.20)
注解和反射 注释comment:给人看 注解annotation:不仅可以给人看,还能给程序看,甚至能被其他程序读取 注解入门 什么是注解 注解的作用: 不是程序本身,可以对程序作出解释(这一点和注释 ...
- Spring 对 Junit4,Junit5 的支持上的运用
1. Spring 对 Junit4,Junit5 的支持上的运用 @ 目录 1. Spring 对 Junit4,Junit5 的支持上的运用 每博一文案 2. Spring对Junit4 的支持 ...
- Java21新特性-虚拟线程
虚拟线程是轻量级线程(类似于 Go 中的 "协程(Goroutine)"),可以减少编写.维护和调度高吞吐量并发应用程序的工作量. 线程是可供调度的最小处理单元,它与其他类似的处理 ...
- Vue cli之在组件中使用axios
默认情况下,我们的项目中并没有对axios包的支持,所以我们需要下载安装. 在项目根目录中使用 npm安装包: npm install axios 接着在main.js文件中,导入axios并把axi ...