句柄的获取和切换

问题:

多个窗口时,该如何识别想操作的窗口,操作页面元素呢?

例如点击一个link属性的文字,跳出新窗口,如何定位新窗口以及操作

分析:

代码:

#coding:utf-8from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get("http://bj.ganji.com/")time.sleep(3)#获取第一个窗口的句柄handle1=driver.current_window_handle#打印第一个句柄print(handle1)#打印第一个窗口的标题print(driver.title)#打印第一个句柄的数据类型print(type(handle1))

#点击小本创业driver.find_element_by_link_text(u"小本创业").click()

#获取所有窗口句柄,用列表形式展示handles=list(driver.window_handles)print(handles)#打印所有窗口句柄print(type(handles))

#获取新窗口的句柄handle2=handles[1] #获取所有句柄,从0开始,第二个窗口句柄为1

#切换至新窗口driver.switch_to.window(handle2)time.sleep(2)#打印当前窗口的标题print(driver.title)#关闭当前的窗口driver.close()#返回至第一个窗口上driver.switch_to.window(handles[0])time.sleep(2)#打印当前窗口的标题print(driver.title)driver.quit()

				
时间: 2024-10-21 01:16:18

句柄的获取和切换的相关文章

C# 获取窗体的句柄和获取窗体中的空间

获取窗体的句柄 FindWindow,用来根据类名和窗口名来得到窗口句柄.但是这个函数不能查找子窗口,也不区分大小写.如果要从一个窗口的子窗口中查找需要使用的FindWindowEX. 1.在C#中使用方法如下: [DllImport("User32.dll",EntryPoint="FindWindow")] private static extern IntPtr FindWindow(string lpClassName,string lpWindowName

n第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径(壹)

http://bbs.a9vg.com/thread-4519306-1-1.html http://bbs.a9vg.com/thread-4519311-1-1.html http://bbs.a9vg.com/thread-4519312-1-1.html http://bbs.3dmgame.com/thread-4780495-1-1.html http://bbs.3dmgame.com/thread-4780494-1-1.html http://bbs.3dmgame.com/t

第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径(柒)

http://www.moxiu.com/17376892/apps/theme http://www.moxiu.com/17376917/apps/theme http://www.moxiu.com/17376919/apps/theme http://www.moxiu.com/17376922/apps/theme http://www.moxiu.com/17376925/apps/theme http://www.moxiu.com/17376930/apps/theme http

7. 多窗口切换,获取句柄

有时候点击某个链接会打开一个新的窗口,获取窗口的唯一标识用句柄表示,以凤凰网为例:https://v.ifeng.com/ 获取当前窗口的句柄:driver.current_window_handle 获取所有句柄: driver.window_handles 切换句柄:driver.switch_to.window() 循环判断句柄是否与首页句柄相等 如果不相等,则说明是新的页面 获取到新的句柄,切换到新打开的页面 打印新页面的title,查看是否切换成功 from selenium impo

DLL中如何获取自身的句柄

问题:DLL中如何获取DLL自身所在的文件夹,而不是主调程序的.用GetCurrentDirectory获取的是exe主调程序所在的目录,不符合我的要求:用GetModuleFileName只能在DllMain中才能获取到,因为DllMain第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径. 但是,如果不是DllMain项目,而是Win32 DLL勾选MFC选项的项目,入口函数是int _tmain(int argc

[python爬虫] Selenium切换窗口句柄及调用Chrome浏览器

因为我的博客是根据我每个阶段自己做的事情而写的,所以前言可能有点跑题,但它更有利于让我回忆这个阶段自己的所作所为.这篇文章主要介绍Selenium爬虫获取当前窗口句柄.切换窗口句柄以及调用Chrome浏览器几个知识点,其中获取当前句柄的方法是非常重要的一个知识点,只有真正遇到的时候才能体会到它的强大.        最近课程比较多,写博客的内容也比较杂,包括网站搭建.HTML设计.计算机图形学.Python数据挖掘.Flash动画等.同时,这周也有老师让我帮忙写几个爬虫,自己进一步理解了爬虫的好

Selenium2+python自动化13-多窗口、句柄(handle)

前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 本篇以打开百度新闻页面搜索按钮上的链接页面为例,依次打开每个按钮,并检验测试结果.用脚本批量操作,可以减少重复劳动,重复的事情让脚本去执行吧! 一.定位一组元素 1.打开百度新闻页面:17http://news.baidu.com/17 2.定位搜索框上一排按钮网页.贴吧,知道等 3.定位一组元素方法在第八篇已

如何解决Selenium句柄、多窗口问题

有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗口 1.这里以赶集网为例,打开赶集网http://cd.ganji.com/,点击工作,就会发现会重新打开一个窗口: image 二.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(h

06-Selenium的窗口切换

目录 Selenium的切换 一.窗口切换 二.iframe切换 三.弹出切换 3.1 alert弹窗 3.2普通隐藏弹窗 3.3 其他-没看懂(转) Selenium的切换 官方把selenium.webdriver包中的switch方法全部封装成了一个包 , switch_to :将焦点切换到所选选项的对象上 方法 方法介绍 备注 switch_to.window(window_name) 切到某个浏览器窗口 switch_to.frame(frame_reference) 切到某个fram