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之字典,你还记得吗?
Sep 20 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python中的MongoDB基本操作:连接、查询实例
Feb 13 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
对python添加模块路径的三种方法总结
Oct 16 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 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中的 == 运算符进行字符串比较
2006/11/26 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
php的4种常用运行方式详解
2016/12/22 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
python获取外网ip地址的方法总结
2015/07/02 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
父亲八十大寿答谢词
2014/01/23 职场文书
城市创卫标语
2014/06/17 职场文书
英语系本科生求职信
2014/07/15 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server