selenium 窗口句柄之间的切换
以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains
#完成点击下载ppt
def get_ppt_download():
start_url = 'http://www.hjenglish.com/dl/bec/'
driver = webdriver.Chrome()
driver.maximize_window()
wait = ui.WebDriverWait(driver,10)
driver.get(start_url)
h = driver.current_window_handle
driver.find_elements_by_xpath('//a[@class="fastLogin"]')[0].click()
driver.find_elements_by_xpath('//input[@class="hp-username"]')[0].send_keys("") #引号内输入用户名
driver.find_elements_by_xpath('//input[@class="hp-password"]')[0].send_keys("") #引号内输入密码
driver.find_elements_by_xpath('//button[@class="hp-btn hp-btn-green"]')[0].click()
time.sleep(5)
for i in driver.window_handles:
if i == h:
driver.switch_to_window(h)
article_list = driver.find_elements_by_xpath('//ul[@id="article_list"]/li')
for index in range(0,len(article_list)):
for m in driver.window_handles:
if m == h:
driver.switch_to_window(h)
article_list[index].find_elements_by_xpath('./div[@class="article_list_info"]/h2/a[@class=" a_article_title"]')[0].click()
for t in driver.window_handles:
if t != h:
driver.switch_to_window(t)
p = driver.find_elements_by_xpath('//div[@class="btn_downpage_area"]/a[@class="btn_downpage"]')
if len(p):
p[0].click()
driver.find_elements_by_xpath('//ul[@id="down_linklist"]/li[1]')[0].click()
time.sleep(5)
driver.close()
else:
driver.switch_to_window(h)
time.sleep(3)
driver.close()
本次测试的网站是http://www.hjenglish.com/dl/bec/
主要是中间列表ppt的下载

经测试,可以正常实现单个ppt的点击下载逻辑,但是在循环点击其他ppt时还有点问题,有待解决。
selenium 窗口句柄之间的切换的更多相关文章
- Selenium:多窗口切换(获取窗口句柄handle)
我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...
- selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...
- selenium获取多窗口句柄并一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...
- Selenium2+python自动化71-多个浏览器之间的切换【转载】
前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数. 举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可 ...
- selenium Webdriver多窗口切换
应用场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时候就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口直接切 ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- selenium之 定位以及切换frame(iframe)
Set<String> windows = driver.getWindowHandles(); int count = 0; for(String handl ...
- 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】
记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...
- IOS关于UIViewController之间的切换
IOS关于UIViewController之间的切换 1.NavigationController切换UIViewController的两种方式 方法一右侧进入 1 SecondViewControl ...
随机推荐
- 成都磨子桥技工学校 / 2016届练习区 0003:jubeeeeeat
0003:jubeeeeeat 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...
- BeautifulSoup的高级应用 之.parent .parents .next_sibling.previous_sibling.next_siblings.previous_siblings
继上一篇BeautifulSoup的高级应用,主要解说的是contents children descendants string strings stripped_strings.本篇主要解说.pa ...
- JConsole远程监控Tomcat7
下面技术应用于最优质的水果的鲜果篮 一.设置服务端: 1.增加Listener到conf/server.xml <Listener className="org.apache.cata ...
- MySql基础总结(1)
对于MySql已经是第二次看了,这次基本的目的是将MySql系统的归纳一边,之前学MySql是将笔记写在本子上,以后不想总带着本子,所以再花点时间把笔记归纳在博客中. 下午已将安装步骤具体的写了.如今 ...
- What's Wrong With Hue Oozie Editor?
本文原文出处: http://blog.csdn.net/bluishglc/article/details/47021019 严禁不论什么形式的转载,否则将托付CSDN官方维护权益! First, ...
- zzulioj--1832--贪吃的松鼠(位运算好题)
1832: 贪吃的松鼠 Time Limit: 3 Sec Memory Limit: 2 MB Submit: 43 Solved: 7 SubmitStatusWeb Board Descri ...
- hpuoj--校赛--考试来了(水题)
问题 C: 感恩节KK专场--考试来了 时间限制: 1 Sec 内存限制: 128 MB 提交: 475 解决: 112 [提交][状态][讨论版] 题目描述 很多课程马上就结课了,随之而来的就是 ...
- 关于fetch
前言: fetch是用来取代传统的XMLHttpRequest的. 它的优点很多,包括链式调用的语法.返回promise等. 什么是fetch? fetch api是基于promise的设计,它是为了 ...
- Ubuntu: Firefox is already running, but is not responding
关于Ubuntu: Firefox is already running, but is not responding问题的解决办法 最近firefox总是开不开,出现“Firefox is alre ...
- [LNOI2014]LCA 树链剖分 离线 前缀和 思维题
题目描述:给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1. 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先. 有q次询问,每 ...