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中的choice()方法使用详解
May 15 Python
Python中List.index()方法的使用教程
May 20 Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
python实现井字棋小游戏
Mar 04 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 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 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
关于svn冲突的解决方法
2013/06/21 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
vue el-table实现自定义表头
2019/12/11 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python中查看文件名和文件路径
2017/03/31 Python
python实现多线程网页下载器
2018/04/15 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
python实现密码强度校验
2020/03/18 Python
Django如何使用redis作为缓存
2020/05/21 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
奠基仪式策划方案
2014/05/15 职场文书
农业生产宣传标语
2014/10/08 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
预备党员半年考察意见
2015/06/01 职场文书