【基于Python的Selenium2自动化测试】09 -多表单切换

2024-08-24 08:58

本文主要是介绍【基于Python的Selenium2自动化测试】09 -多表单切换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,比如之前遇到的126邮箱登录页面就是一个嵌套页面,而WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面。

例如:我们在以下的html代码中,通过iframe表单嵌入一个百度页面,html代码如下:
【inner.html 源码】

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>inner</title>
</head>
<body><div class="row-fluid"><div class="span6 well"><h3>inner</h3><iframe id="f2" src="http://www.baidu.com" width="1000" height="500"></iframe><a href="javascript:alert('watir-webdriver better than selenium webdriver;')">click</a></div></div>
</body>
</html>

在这里插入图片描述

【frame.html源码】

<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>frame</title><script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script><link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /><script type="text/javascript">$(document).ready(function(){});</script>
</head>
<body>
<div class="row-fluid"><div class="span10 well"><h3>frame</h3><iframe id="f1" src="inner.html" width="1000" height="600"></iframe></div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

在这里插入图片描述

此时,我们来定位页面上的百度输入框,代码如下:

coding=utf-8
from selenium import webdriver
import time
import osdriver = webdriver.Chrome()
file_path =  'file:///' + os.path.abspath('frame.html')
driver.get(file_path)driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)driver.quit()

此时运行程序会出现如下报错信息:
在这里插入图片描述

【代码修改】

#coding=utf-8
from selenium import webdriver
import time
import osdriver = webdriver.Chrome()
file_path =  'file:///' + os.path.abspath('frame.html')
driver.get(file_path)driver.implicitly_wait(30)
#先找到到ifrome1(id = f1)
driver.switch_to.frame("f1")
#再找到其下面的ifrome2(id =f2)
driver.switch_to.frame("f2")#下面就可以正常的操作元素了
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)

注意: 运行时,需要将inner.html和frame.html这两个文件与脚本文件放在同一个目录下面。

运行结果:
在这里插入图片描述

说明:
(1)在上面的例子中打开的是本地的html文件,需要用到python的os模块,path.abspath()方法用于获取当前路径下的文件。
(2)switch_to.frame()默认可以直接获取表单的id或者name属性。如果iframe没有可用的idname属性,则可以先通过find_element_by_xpath定位,再将定位对象传给switch_to.frame()方法。
(3)如果完成了当前表单上的操作,则可以通过switch_to.parent_content()方法跳出当前一级表单。
(4)在进入多级表单的情况下,还可以通过switch_to.default_content()方法跳回到最外层的页面。
(5)implicityly_wait()方法类似于time.sleep(),但前者比后者更加智能,后者只能选择一个固定的时间等待,前者可以在一个时间范围内智能的等待。

这篇关于【基于Python的Selenium2自动化测试】09 -多表单切换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102033

相关文章

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

Python容器转换与共有函数举例详解

《Python容器转换与共有函数举例详解》Python容器是Python编程语言中非常基础且重要的概念,它们提供了数据的存储和组织方式,下面:本文主要介绍Python容器转换与共有函数的相关资料,... 目录python容器转换与共有函数详解一、容器类型概览二、容器类型转换1. 基本容器转换2. 高级转换示

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3