python中的句柄操作的方法示例


Posted in Python onJune 20, 2019

通过窗口标题获取句柄

import win32gui
 
hld = win32gui.FindWindow(None,u"Adobe Acrobat") #返回窗口标题为Adobe Acrobat的句柄

通过父窗口句柄获取子句柄

#parent为父窗口句柄id
def get_child_windows(parent):
  '''
  获得parent的所有子窗口句柄
   返回子窗口句柄列表
   '''
  if not parent:
    return
  hwndChildList = []
  win32gui.EnumChildWindows(parent, lambda hwnd, param: param.append(hwnd), hwndChildList)
  return hwndChildList

根据句柄获取句柄标题和类名

import win32gui
title = win32gui.GetWindowText(jbid)  #jbid为句柄id
#获取标题
clsname = win32gui.GetClassName(jbid)  
#获取类名

根据句柄获取窗口位置

import win32gui
left, top, right, bottom = win32gui.GetWindowRect(jbid)
#分别为左、上、右、下的窗口位置

根据句柄进行点击操作

import win32api,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 
from selenium import webdriver
import time

''' 主要运用方法:
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
# 进入新打开链接窗口 
for handle in all_handles:
  if handle != current_windows:
    driver.switch_to_window(handle)
    print(u"切换句柄成功")
time.sleep(4)
driver.quit()

(2)使用JS处理方法如下:

我们需要使用JS对HTML做源码处理,打开百度并登录,右键某个链接,查看:

python中的句柄操作的方法示例

可以看到target属性后边都紧跟着'_blank',我们想在当前页面打开,就必须需要去掉这个属性,操作步骤如下:

js = 'document.getElementsByClassName("mnav")[0].target="";'
driver.execute_script(js)
driver.find_element_by_link_text("新闻").click()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python fabric实现远程操作和部署示例
Mar 25 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
python监控文件或目录变化
Jun 07 Python
Python正则表达式常用函数总结
Jun 24 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
Python高级用法总结
May 26 Python
python日期与时间戳的各种转换示例
Feb 12 Python
Python单链表原理与实现方法详解
Feb 22 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python 如何展开嵌套的序列
Aug 01 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 #Python
一篇文章了解Python中常见的序列化操作
Jun 20 #Python
python集合是否可变总结
Jun 20 #Python
Django如何自定义model创建数据库索引的顺序
Jun 20 #Python
pyqt 多窗口之间的相互调用方法
Jun 19 #Python
pyqt5 实现多窗口跳转的方法
Jun 19 #Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 #Python
You might like
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
Python中input与raw_input 之间的比较
2017/08/20 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python+opencv实现阈值分割
2018/12/26 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
酒店管理毕业生自我鉴定
2014/03/02 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
TensorFlow的自动求导原理分析
2021/05/26 Python