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中的reduce内建函数使用方法指南
Aug 31 Python
python中pass语句用法实例分析
Apr 30 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
Python二元赋值实用技巧解析
Oct 25 Python
Python二元算术运算常用方法解析
Sep 15 Python
Python识别验证码的实现示例
Sep 30 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
如何Python使用re模块实现okenizer
Apr 30 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
长波知识介绍
2021/03/01 无线电
php基础教程
2015/08/26 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
python opencv之分水岭算法示例
2018/02/24 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
教师病假条范文
2015/08/17 职场文书
员工工作心得体会
2019/05/07 职场文书