Python+selenium(多表单、多窗口切换)
多表单切换
案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作
Frame.html
<html>
<head>
<title>Frame_test</title>
</head> <body>
<div>
<iframe id="search" src="http://www.sogou.com" width="800" height="500">
</div>
</body> <html>
浏览器打开:
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:返回所有窗口的句柄到当前会话
Python+selenium(多表单、多窗口切换)的更多相关文章
- Selenium 多表单(frame/iframe)切换
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...
- Python+Selenium学习笔记8 - 多表单&多窗口切换
1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 # coding = utf-8 2 3 from selenium import webdriver 4 import os ...
- Selenium:多表单(frame/iframe)切换(Switch模块)
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...
- ExtJs 4.2.1 点击按钮弹出表单的窗口
初学ExtJs,做项目的时候想做一个这样的效果:点击按钮弹出对话框,之前一直是使用EasyUi来做的, EasyUi里有Dialog,用起来很方便,但是现在转移到ExtJs上后,发现没有Dialog这 ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- 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 ...
随机推荐
- Iahub and Xors Codeforces - 341D
二维线段树被卡M+T...于是去学二维树状数组区间更新区间查询 树状数组维护数列区间xor的修改.删除(就是把原问题改成一维): 以下p*i实际都指i个p相xor,即(i&1)*pa表示原数列 ...
- New Land LightOJ - 1424
New Land LightOJ - 1424 题意:找出01矩阵中最大的完全由0组成的矩阵. 方法: 重点在于转化. 先预处理(i,j)点向上最长能取到的连续的全0条的长度.然后枚举某一行作为矩阵的 ...
- 谷歌编码风格内容,新建一个xml文件,复制进去就可以在eclipse里面用了,命名--eclipse-java-google-style.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <profi ...
- 508 Most Frequent Subtree Sum 出现频率最高的子树和
详见:https://leetcode.com/problems/most-frequent-subtree-sum/description/ C++: /** * Definition for a ...
- import和from .xxx import *的一点重要区别
import zzz 不会导入zzz中已导入的模块 from .xxx import * 会导入xxx中已导入的模块 特别注意: 使用logging时,x模块导入了log.py,y模块导入了log.p ...
- (一)Mybatis之初步接触
Maven的安装及环境配置 安装及配置只需按照以下三个链接的步骤走 撸帝的博客https://www.funtl.com/zh/maven/Maven-%E5%AE%89%E8%A3%85%E9%85 ...
- 洛谷P2763 试题库问题(最大流)
题意 $n$道试题,每道题有多种类别属性 抽取$m$道题组成试卷,要求包含指定的类型 输出方案 Sol 又是一道zz网络流 我的构图长这样,$k_i$表示第$i$道试题需要的数量 #include&l ...
- qt5.8+vs2015使用Qt5WebEngine搭建环境
转载请注明出处:http://www.cnblogs.com/dachen408/p/7575094.html 1.项目属性,C/C++,所有选项,附加包含目录新增. $(QTDIR)\include ...
- 给Sublime Text3 设置自定义快捷键
Preferrences -> Key Bindings-User打开用户自定义快捷键文件,添加以下代码,保存. [ { "keys": ["ctrl+shift+ ...
- 原创:mysql下载 实战 最强最全的无脑白痴版 给小白的爱