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&MongoDB爬取图书馆借阅记录
Feb 05 Python
django settings.py 配置文件及介绍
Jul 15 Python
解决Django中多条件查询的问题
Jul 18 Python
Python中拆分字符串的操作方法
Jul 23 Python
django将数组传递给前台模板的方法
Aug 06 Python
python下载库的步骤方法
Oct 12 Python
python 实现字符串下标的输出功能
Feb 13 Python
keras 如何保存最佳的训练模型
May 25 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python-地图可视化组件folium的操作
Dec 14 Python
python for循环赋值问题
Jun 03 Python
详解如何用Python实现感知器算法
Jun 18 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 XML备份Mysql数据库
2009/05/27 PHP
php 显示指定路径下的图片
2009/10/29 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python生成器以及应用实例解析
2018/02/08 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
台湾良兴购物网:EcLife
2019/12/01 全球购物
工程造价与管理专业应届生求职信
2013/11/23 职场文书
学校消防安全制度
2014/01/30 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang