python表单切换_Python+selenium(多表单、多窗口切换)

本文详细介绍了使用 Selenium 进行多表单(frame/iframe)和窗口切换的操作。通过 `switch_to.frame()` 方法在 iframe 中定位元素,如果 iframe 无 id 或 name 属性,可通过 xpath 定位。同时展示了在多窗口间切换的实例,使用 `switch_to.window()` 方法在不同窗口间进行切换。这些技巧在自动化测试中非常实用。
摘要由CSDN通过智能技术生成

多表单切换

案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作

Frame.html

Frame_test

浏览器打开:

frame_test.py

from selenium import webdriver

from time import sleep

driver=webdriver.Firefox()

file_path=r'E:\python_script\Webdriver\1.html'

driver.get(file_path)

# 切换到iframe(id="if")

driver.switch_to.frame('search')

driver.find_element_by_id("query").send_keys("python")

sleep(2)

driver.find_element_by_id("stb").click()

sleep(2)

driver.quit()

多表单切换,是通过switch_to.frame()方法将当前定位的主题切换为frame/iframe表单的内切页面中。

switch_to.frame()默认可以直接取表单的id或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位

# 先通过xpath定位到iframe

xf = driver.find_element_by_xpath('//*[@class="search"]')

# 再将定位对象传给switch_to.frame()方法

driver.switch_to.frame(xf)

多窗口切换

案例:在百度学术首页,点击注册按钮,进入注册页面,然后返回学术搜索页面,输入关键词搜索

windows.py

from selenium import webdriver

from time import sleep

driver = webdriver.Firefox()

driver.implicitly_wait(10)

driver.get("http://xueshu.baidu.com/")

# 获得百度学术搜索窗口句柄

search_windows = driver.current_window_handle

sleep(2)

driver.find_element_by_link_text('注册').click()

sleep(2)

# 获得当前所有打开的窗口的句柄

all_handles = driver.window_handles

# 进入注册窗口

for handle in all_handles:

if handle!=search_windows:

print('now is register window!')

sleep(2)

# 回到学术搜索窗口

for handle in all_handles:

if handle == search_windows:

driver.switch_to.window(search_windows)

sleep(2)

print("now is search window!")

driver.find_element_by_id('kw').send_keys('selenium')

driver.find_element_by_id('su').click()

sleep(2)

driver.quit()

webdriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换。

在本案例中,涉及到的方法如下:

current_window_handle:获得当前窗口句柄

window_handles:返回所有窗口的句柄到当前会话

Selenium 多表单(frame/iframe)切换

frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...

Selenium:多表单(frame/iframe)切换(Switch模块)

frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...

ExtJs 4.2.1 点击按钮弹出表单的窗口

初学ExtJs,做项目的时候想做一个这样的效果:点击按钮弹出对话框,之前一直是使用EasyUi来做的, EasyUi里有Dialog,用起来很方便,但是现在转移到ExtJs上后,发现没有Dialog这 ...

selenium 多表单切换处理(iframe/frame)

在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver  只能在同一页面识别定位元素 ...

web自动化测试-selenium多表单切换

一.概述 1.在web应用中会经常遇到frame/iframe表单嵌套页面的应用 2.WebDriver只能在一个页面上对元素进行识别与定位 3.对于frame/iframe表单内嵌的页面上元素无法识 ...

selenium 多表单切换

frame/iframe表单嵌套页面的应用.WebDrivr只能在一个页面上对元素识别与定位,对于在frame/iframe表单内嵌页面上的元素无法直接定位.这时需要使用 switch_to.fram ...

Python+Selenium练习篇之19-多窗口之间切换

本文来介绍如何处理driver在多窗口之间切换,想一下这样的场景,在页面A点击一个连接,会触发在新Tab或者新窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来的脚本是操作页面B的元 ...

【Python】django表单与提交

参考:http://djangobook.py3k.cn/2.0/chapter07/ 本文的内容应属于django的表单模块,没有涉及到的后端request对象的处理方法可以单独深入学习表单. UR ...

基于hi-nginx的web开发(python篇)——表单处理和文件上传

hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据. 表单数据一般用GET和POST方法提交.hi-nginx会把这些数据解析出来,放在form成员变量里.对pyth ...

Dynamics CRM 2015Online Update1 new feature之表单页Tabs切换

CRM2011的界面相对于CRM4.0进行了比较大的改动,N久没见过4.0的界面了所以忘了表单是什么样子的了,但2011的表单中若含有多个tab的话,是可以通过左侧栏进行切换,话说2013的界面相对2 ...

随机推荐

可视化工具solo show-----Prefuse自带例子GraphView讲解

2014.10.15日以来的一个月,挤破了头.跑断了腿.伤透了心.吃够了全国最大餐饮连锁店——沙县小吃.其中酸甜苦辣,绝不是三言两语能够说得清道的明的.校招的兄弟姐妹们,你们懂得…… 体会最深的一句话 ...

通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)

前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实.现在就想设计一个共通的功能来实现这个导出. 需求分析 在开始之前我们先要明白我们要实现怎样一个 ...

Redis批量导入数据

首先准备数据文件 格式为 SET Key0 Value0 SET Key1 Value1 ... SET KeyN ValueN 利用shell转换数据 #!/bin/bash while read ...

UGUI学习之InputField

密码框在Context type 设置为Passwold 设置背景和调整字体颜色与透明度. 还有一个就是Toggle,(开关)要指定他的Graphic.

Linux 下搭建ftp服务器 指定用户指定目录及其他操作

搭建 Linux下 rpm -qa |grep vsftpd查看是否安装 没安装yum安装 /etc/vsftpd/目录下有vsftpd.conf配置文件 根据需求 进行配置  是否使用匿名用户以及文 ...

用subline text写PHP后台服务器POST请求

1 运行XAMPP程序,看到Apache Web Server 是Running状态即可 2 打开Subline text ,新建一个PHP文件,选择保存路径:应用程序->XAMPP->h ...

【1】HTTP协议和Socket接口区别

内容提要: 1.网络七层模型 2.什么是HTTP协议 3.什么是Socket接口 1.网络七层模型 第一层:物理层 为设备之间的信息提供传输提供可靠环境,那么这个环境是什么呢? 如:同轴电缆,插头,接 ...

第83节:Java中的学生管理系统分页功能

第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

[转]50个极好的bootstrap 后台框架主题下载

50个极好的bootstrap 后台框架主题下载 http://sudasuta.com/bootstrap-admin-templates.html 越来越多的设计师和前端工程师开始用bootstr ...

poj 2785(折半枚举+二分搜索)

传送门:Problem 2785 题意: 给定 n 行数,每行都有 4 个数A,B,C,D. 要从每列中各抽取出一个数,问使四个数的和为0的所有方案数. 相同数字不同位置当作不同数字对待. 题解: 如 ...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值