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脚本
Apr 05 Python
Python线程的两种编程方式
Apr 14 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
python3.8下载及安装步骤详解
Jan 15 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
Python IO文件管理的具体使用
Mar 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 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
javascript some()函数用法详解
2014/11/13 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php自动加载代码实例详解
2021/02/26 PHP
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
浅谈Python type的使用
2019/11/19 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
python如何保存文本文件
2020/06/07 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
乐观大学生的自我评价
2014/01/10 职场文书
英文自荐信常用句子
2014/03/26 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
请假条格式范文
2014/04/10 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
库房管理员岗位职责
2015/02/12 职场文书
学校运动会加油词
2015/07/18 职场文书
MySQL基础(二)
2021/04/05 MySQL