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使用pil生成图片验证码的方法
May 08 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python编程实现归并排序
Apr 14 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
对Python中的@classmethod用法详解
Apr 21 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
详解用Python实现自动化监控远程服务器
May 18 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
phpMyadmin 用户权限中英对照
2010/04/02 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
JavaScript Prototype对象
2009/01/07 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python随机模块random使用方法详解
2020/02/14 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
深入了解Python enumerate和zip
2020/07/16 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
cf战队收人口号
2014/06/21 职场文书
师范类求职信
2014/06/21 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
委托培训协议书
2014/11/17 职场文书
大队委员竞选稿
2015/11/20 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
基于Redis位图实现用户签到功能
2021/05/08 Redis