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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python实现发送email的几种常用方法
Aug 18 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
Python中装饰器高级用法详解
Dec 25 Python
python opencv 图像尺寸变换方法
Apr 02 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Python开发网站目录扫描器的实现
Feb 21 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
python批量修改xml属性的实现方式
Mar 05 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
Feb 25 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读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP会话控制实例分析
2016/12/24 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python实现的希尔排序算法实例
2015/07/01 Python
django2 快速安装指南分享
2018/01/05 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
美德好少年事迹材料
2014/01/19 职场文书
师德学习感言
2014/01/31 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
《金子》教学反思
2014/04/13 职场文书
婚礼父母致辞
2015/07/28 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android