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 相关文章推荐
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
利用Python如何生成hash值示例详解
Dec 20 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
Python从零开始创建区块链
Mar 06 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
教你使用python画一朵花送女朋友
Mar 29 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
Python中qutip用法示例详解
Oct 02 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 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来自动调用不同服务器上的flash
2006/10/09 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP实现懒加载的方法
2015/03/07 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
初探nodeJS
2017/01/24 NodeJs
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
python数据归一化及三种方法详解
2019/08/06 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
医院学雷锋活动策划方案
2014/02/15 职场文书
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python