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之模块的加载
Oct 24 Python
python获取目录下所有文件的方法
Jun 01 Python
python进程间通信Queue工作过程详解
Nov 01 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
Django中使用MySQL5.5的教程
Dec 18 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
Python偏函数实现原理及应用
Nov 20 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
这样写python注释让代码更加的优雅
Jun 02 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与Web页面交互操作实例分析
2020/06/02 PHP
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
列举Python中吸引人的一些特性
2015/04/09 Python
python实现杨氏矩阵查找
2019/03/02 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Python二维码生成识别实例详解
2019/07/16 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python elasticsearch环境搭建详解
2019/09/02 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Python页面加载的等待方式总结
2021/02/28 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
商务日语毕业生自荐信范文
2013/11/14 职场文书
美德少年事迹材料
2014/01/23 职场文书
财务科科长岗位职责
2014/03/10 职场文书
服务标语口号
2014/07/01 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
初中成绩单评语
2014/12/29 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
python单向链表实例详解
2022/05/25 Python