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中实现对list做减法操作介绍
Jan 09 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
python lxml中etree的简单应用
May 10 Python
python里运用私有属性和方法总结
Jul 08 Python
python数值基础知识浅析
Nov 19 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
python opencv通过4坐标剪裁图片
Jun 05 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/10/09 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
微信小程序登录session的使用
2019/03/17 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
好的自荐信的要求
2013/10/30 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
外联部演讲稿
2014/05/24 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
教师工作证明范本
2015/06/12 职场文书