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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
python2.7安装图文教程
Mar 13 Python
opencv python 基于KNN的手写体识别的实例
Aug 03 Python
python实现简单名片管理系统
Nov 30 Python
python3中property使用方法详解
Apr 23 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 Python
python百行代码实现汉服圈图片爬取
Nov 23 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生成EXCEL的东东
2006/10/09 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
JavaScript函数详解
2015/02/27 Javascript
Express的路由详解
2015/12/10 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python MD5加密实例详解
2017/08/02 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
python os模块简单应用示例
2019/05/23 Python
flask框架路由常用定义方式总结
2019/07/23 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python3 logging日志封装实例
2020/04/08 Python
python 实现两个npy档案合并
2020/07/01 Python
Python 实现一个计时器
2020/07/28 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
制冷与电控专业应届生求职信
2013/11/11 职场文书
四年级科学教学反思
2014/02/10 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
邀请书模板
2015/02/02 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers