python3.6+selenium实现操作Frame中的页面元素


Posted in Python onJuly 16, 2019

有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下!

首先先创建三个html文件,文件代码如下:

1)frameset.html

python3.6+selenium实现操作Frame中的页面元素

2)frame_left.html

python3.6+selenium实现操作Frame中的页面元素

3)frame_right.html

python3.6+selenium实现操作Frame中的页面元素

4)frame_middle.html

python3.6+selenium实现操作Frame中的页面元素

5)把这四个html文件放在同一个文件夹下<

以下是python实现该逻辑的代码:

import unittest
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class MyTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox(executable_path=‘D:\python\driver\geckodriver')
def test_HandleFrame(self):
url=“file:///D:/frame/frameset.html”
self.driver.get(url)
#使用索引方式进入指定的frame页面,索引号从0开始
#所以想进入中间的frame,需要使用索引号1
#如果没有使用此行代码,则无法找到页面中左侧frame中的任何页面元素
self.driver.switch_to.frame(0)
#找到左侧frame中的p标签元素
leftFrameText=self.driver.find_element_by_xpath("//p")
#断言左侧frame中的文字是否和“这是左侧frame页面上的文字”这几个关键字相一致
self.assertAlmostEqual(leftFrameText.text,u"这是左侧frame页面上的文字")
#找到左侧frame中的按钮元素,并单击该元素
self.driver.find_element_by_tag_name(“input”).click()
try:
#动态等待alert窗体出现
alertWindow=WebDriverWait(self.driver,10).until(EC.alert_is_present())
#打印alert消息
print(alertWindow.text)
alertWindow.accept()
except TimeoutException as e:
print(e)
#使用driver.switchTo.default_content方法,从左侧frame中返回到frameset页面
#如果不调用此行代码则无法从左侧frame页面中直接进入其他frame页面
self.driver.switch_to.default_content()
#通过标签名找到页面中所有的frame元素,然后通过索引进入该frame
self.driver.switch_to.frame(self.driver.find_elements_by_tag_name(“frame”)[1])
#断言页面源码中是否存在“这是中间frame页面上的文字”关键字串
assert u"这是中间frame页面上的文字"in self.driver.page_source
print(“这是中间的frame页面”)
#在输入框中输入“我在中间frame”
self.driver.find_element_by_tag_name(“input”).send_keys(“我在中间frame”)
self.driver.switch_to.default_content()
self.driver.switch_to.frame(self.driver.find_element_by_id(“rightframe”))
assert u"这是右侧frame页面上的文字" in self.driver.page_source
self.driver.switch_to.default_content()
print(“这是右侧的frame页面”)

if name == ‘main':
unittest.main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字典(Dictionary)操作详解
Mar 11 Python
Python selenium文件上传方法汇总
Nov 19 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
一看就懂得Python的math模块
Oct 21 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
python实现简单成绩录入系统
Sep 19 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Python字典dict常用方法函数实例
Nov 09 Python
Django正则URL匹配实现流程解析
Nov 13 Python
Pycharm安装python库的方法
Nov 24 Python
Python利器openpyxl之操作excel表格
Apr 17 Python
Python Web版语音合成实例详解
Jul 16 #Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 #Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 #Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 #Python
python调用其他文件函数或类的示例
Jul 16 #Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 #Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 #Python
You might like
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
python字符串排序方法
2014/08/29 Python
Python每天必学之bytes字节
2016/01/28 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
大学生求职简历的自我评价范文
2013/10/12 职场文书
求职自荐信范文格式
2013/11/29 职场文书
公司应聘求职信
2014/06/21 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Python Matplotlib库实现画局部图
2021/11/17 Python
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL