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 ...
随机推荐
- clickhouse数据操常见执行语句
1.清空本地表数据 truncate table 数据库名.表名 :) select * from test_local; SELECT * FROM test_local Query id: ab1 ...
- vue使用promise.all异步实现多个请求完成之后在执行某些操作
使用场景:多个请求方法拿到数据之后需要对这不同的数据进行比较,之后在输出并渲染 思路:使用promise.all()异步操作: Promise.all([ //上架 new Promise((reso ...
- Uncaught TypeError: (intermediate value)(intermediate value)(intermediate value)(intermediate value)...is not a function
之前写完前端部分的时候总是会出现这个错误 对应代码 解决方法,在后面加上分号即可解决
- 【zabbix】snmp监控linux主机
1.安装net-snmp # yum install -y net-snmp 2.配置文件 /etc/snmp/snmpd.conf 添加如下内容 view systemview included . ...
- gin返回json假数据
package main import ( "github.com/gin-gonic/gin" "encoding/json" "fmt" ...
- 3种方法实现图片瀑布流的效果(纯JS,Jquery,CSS)
最近在慕课网上听如何实现瀑布流的效果:介绍了3种方法. 1.纯JS代码实现: HTML代码部分: <!DOCTYPE html> <html> <head> < ...
- Wordpress小技巧(一)
★★★ Wordpress发表Post文章时,页面会出现评论框,如何禁止出现评论框.步骤如下: 一.使用wordpress的后台功能关闭文章评论依次进入"后台"-"设置 ...
- 基于webapi的websocket聊天室(番外二)
我比较好奇的是webapi服务器怎么处理http请求和websocket请求.有了上一篇番外的研究,这里就可以试着自己写个非常简易的webapi服务器来接收这两种请求. 效果 http请求 消息打印 ...
- 【题解】A18747.眼红的同学
题目链接:眼红的同学 题干信息很简单,看到数据量之后就不简单了.在数据量小的时候可以使用双层循环暴力的方法来求答案.显然对于这道题而言O(n^2)是完全过不去的. 前置知识: 使用树状数组求逆序对 会 ...
- PHP 中使用 ElasticSearch 的最佳实践 (下)
引言 上一篇文章,我们使用同步的方式将数据,同步写入到 ElasticSearch 中.接下来的这篇文章,主要介绍使用 RabbitMQ 的方式,异步的将数据同步到 ElasticSearch . 部 ...