如何在python中实现句柄操作
如何在python中实现句柄操作?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
通过窗口标题获取句柄
importwin32gui hld=win32gui.FindWindow(None,u"AdobeAcrobat")#返回窗口标题为AdobeAcrobat的句柄
通过父窗口句柄获取子句柄
#parent为父窗口句柄id defget_child_windows(parent): ''' 获得parent的所有子窗口句柄 返回子窗口句柄列表 ''' ifnotparent: return hwndChildList=[] win32gui.EnumChildWindows(parent,lambdahwnd,param:param.append(hwnd),hwndChildList) returnhwndChildList
根据句柄获取句柄标题和类名
importwin32gui title=win32gui.GetWindowText(jbid)#jbid为句柄id #获取标题 clsname=win32gui.GetClassName(jbid) #获取类名
根据句柄获取窗口位置
importwin32gui left,top,right,bottom=win32gui.GetWindowRect(jbid) #分别为左、上、右、下的窗口位置
根据句柄进行点击操作
importwin32api,win32con win32api.SetCursorPos([横坐标,纵坐标]) #根据横纵坐标定位光标 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP|win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0) #给光标定位的位置进行单击操作(若想进行双击操作,可以延时几毫秒再点击一次) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP|win32con.MOUSEEVENTF_RIGHTDOWN,0,0,0,0) #给光标定位的位置进行右击操作
根据句柄将窗口放在最前
win32gui.SetForegroundWindow(jbid)
Selenium+Python句柄操作
当我们打开浏览器,点击页面链接时,经常会遇到新的页面会在新窗口打开,而Selenium不会去自动识别新窗口,所以我们要做句柄切换操作,或者使用JS,如何操作呢?
(1)切换句柄:switch_to_window
#coding=utf-8 fromseleniumimportwebdriver importtime '''主要运用方法: 1.current_window_handl:获得当前窗口句柄 2.window_handles:返回所以窗口的句柄到当前会话 3.switch_to_window():切换窗口函数 ''' #访问百度 driver=webdriver.Firefox() driver.get("http://www.jianshu.com") driver.maximize_window() time.sleep(3) #获取简书首页句柄 current_windows=driver.current_window_handle #打开第一条对应链接 driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div[4]/ul/li[1]/div/a').click() time.sleep(3) #获取所有打开句柄 all_handles=driver.window_handles #进入新打开链接窗口 forhandleinall_handles: ifhandle!=current_windows: driver.switch_to_window(handle) print(u"切换句柄成功") time.sleep(4) driver.quit()
(2)使用JS处理方法如下:
我们需要使用JS对HTML做源码处理,打开百度并登录,右键某个链接,查看:
可以看到target属性后边都紧跟着'_blank',我们想在当前页面打开,就必须需要去掉这个属性,操作步骤如下:
js='document.getElementsByClassName("mnav")[0].target="";' driver.execute_script(js) driver.find_element_by_link_text("新闻").click()
看完上述内容,你们掌握如何在python中实现句柄操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...