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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
在Python中使用元类的教程
Apr 28 Python
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
解决Python的str强转int时遇到的问题
Apr 09 Python
python中利用zfill方法自动给数字前面补0
Apr 10 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
PIL图像处理模块paste方法简单使用详解
Jul 17 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
jupyter lab文件导出/下载方式
Apr 22 Python
Python生成器generator原理及用法解析
Jul 20 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扩展开发经验分享
2012/09/06 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
javascript放大镜效果的简单实现
2013/12/09 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
利用python进行文件操作
2020/12/04 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
GMP办公室主任岗位职责
2014/03/14 职场文书
老师对学生的评语
2014/04/18 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
2014最新离职证明范本
2014/09/12 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
选购到合适的激光打印机
2022/04/21 数码科技
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android