页面操作的场景:进到到页面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及返回默认页面的更多相关文章

  1. Selenium UI自动化解决iframe定位问题

      更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6735116.html 一个阴雨霏霏 ...

  2. 自动化测试系列:Selenium UI自动化解决iframe定位问题

      更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6735116.html 一个阴雨霏霏 ...

  3. python+selenium UI自动化不同浏览器之间的切换

    class register(): ROBOT_LIBRARY_SCOPE = 'GLOBAL' def __init__(self): pass # m默认打开chrome def open_bro ...

  4. Python实现浏览器自动化操作

    Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼     最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...

  5. [转载]Python实现浏览器自动化操作

    原文地址:Python实现浏览器自动化操作作者:rayment   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...

  6. 使用appium+python做UI自动化的demo

    使用appium+python做UI自动化的demo 案例使用的知乎app,下载最新的知乎apk,存在了电脑上,只需要配置本机上app目录,不需要再配置appPackage和appActivity # ...

  7. python selenium 基本常用操作

    最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要.因本人水平有限,有不对之处多多包涵!欢迎指正! 一.xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css ...

  8. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

  9. python+ selenium&APPium自动化 page Object 设计模式

    题记: 之前公司项目比较稳定, 在进行了系统测试,想用自动化测试进行冒烟测试,或者对主要功能进行测试, 因此用到了PO模式 因此做个记录: Page Object Page Object模式是使用Se ...

  10. python selenium鼠标键盘操作(ActionChains)

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...

随机推荐

  1. JavaScript字符串String方法介绍及使用示例

    实例方法 charAt() charCodeAt() 返回索引位置的字符 'hello'.charAt(0) //h 等价 'hello'.[0] //返回索引位置的字符的Unicode码点 'hel ...

  2. 【GUI界面软件】抖音评论采集:自动采集10000多条,含二级评论、展开评论!

    目录 一.背景说明 1.1 效果演示 1.2 演示视频 1.3 软件说明 二.代码讲解 2.1 爬虫采集模块 2.2 软件界面模块 2.3 日志模块 三.获取源码及软件 一.背景说明 1.1 效果演示 ...

  3. linux文本三剑客之awk详解

    linux文本三剑客之awk详解 目录 linux文本三剑客之awk详解 1.awk命令详解 1.1 awk的处理流程 1.2 awk中的变量 1.2.1 内置变量 1.2.2 自定义变量 1.3 a ...

  4. es请求方式调用

    Es基础 关系: ElasticSearch-> mysql index (索引)-> 数据库 Documents(文档) -> row(行) Fileds(字段)-> col ...

  5. Java中Future 用来做异步任务返回

    我们在开发中会有这种场景,我们要调用远程服务的一个方法,并且拿到返回值去使用.笔者最近项目中出现了一个ANR,具体是调用了远程服务,发生异常一直没有返回值,然后导致ANR. 怎么解决呢?找了一圈,发现 ...

  6. AeroAdmin、TeamViewer和Splashtop Business Access的区别

    ​Hi everyone! 今天又是喜闻乐见的吃瓜时间,王婆卖瓜,不得不夸. 炎炎夏日,就给大家送个大西瓜吧.望梅止渴也是极好的. ------官宣分割线------ Splashtop是针对个人和企 ...

  7. Django性能之道:缓存应用与优化实战

    title: Django性能之道:缓存应用与优化实战 date: 2024/5/11 18:34:22 updated: 2024/5/11 18:34:22 categories: 后端开发 ta ...

  8. hadoop部署2

    完全分布式部署介绍 学习目标 完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别 部署在不同的多台机器上. 能够了解完全分布式部署 ...

  9. 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

    你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使 ...

  10. ICESat-2 从ATL08中获取ATL03分类结果

    ICESat-2 ATL03数据和ATL08数据的分段距离不一致,ATL08在ATL03的基础上重新分段,并对分段内的数据做处理得到一系列的结果,详情见数据字典: ATL08 Product Data ...