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常用知识点汇总
May 08 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python中正则的使用指南
Dec 04 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python实现的单向循环链表功能示例
Nov 10 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
手写一个python迭代器过程详解
Aug 27 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
Python 元组操作总结
Sep 18 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 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
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
深入php self与$this的详解
2013/06/08 PHP
header导出Excel应用示例
2014/01/24 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
php微信支付接口开发程序
2016/08/02 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
原生python实现knn分类算法
2019/10/24 Python
tensorflow常用函数API介绍
2020/04/19 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
庆七一活动方案
2014/01/25 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
高中数学教学反思
2014/01/30 职场文书
公司总经理岗位职责
2014/03/15 职场文书
我的梦想演讲稿
2014/04/30 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
医院党建工作总结2015
2015/05/26 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python