Python+selenium 获取浏览器窗口坐标、句柄的方法


Posted in Python onOctober 14, 2018

1.0 获取浏览器窗口坐标

python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现”Command not found”的情况。set_window_rect()函数也一样。

def get_window_rect(self):
 """
 Gets the x, y coordinates of the window as well as height and width of
 the current window.

 :Usage:
  driver.get_window_rect()
 """
 return self.execute(Command.GET_WINDOW_RECT)['value']

def set_window_rect(self, x=None, y=None, width=None, height=None):
 """
 Sets the x, y coordinates of the window as well as height and width of
 the current window.

 :Usage:
  driver.set_window_rect(x=10, y=10)
  driver.set_window_rect(width=100, height=200)
  driver.set_window_rect(x=10, y=10, width=100, height=200)
 """
 if (x is None and y is None) and (height is None and width is None):
  raise InvalidArgumentException("x and y or height and width need values")

 return self.execute(Command.SET_WINDOW_RECT, 
  {"x": x, "y": y, "width": width, "height": height})['value']

然而Webdriver.py文件还定义了get_window_position()函数和get_window_size()函数,可以用这两个函数来分别获取窗口的坐标和大小,而不需要用到win32gui的方法。

def get_window_size(self, windowHandle='current'):
  """
  Gets the width and height of the current window.

  :Usage:
   driver.get_window_size()
  """
  command = Command.GET_WINDOW_SIZE
  if self.w3c:
   if windowHandle != 'current':
    warnings.warn("Only 'current' window is supported for W3C compatibile browsers.")
   size = self.get_window_rect()
  else:
   size = self.execute(command, {'windowHandle': windowHandle})

  if size.get('value', None) is not None:
   size = size['value']

  return {k: size[k] for k in ('width', 'height')}
def get_window_position(self, windowHandle='current'):
  """
  Gets the x,y position of the current window.

  :Usage:
   driver.get_window_position()
  """
  if self.w3c:
   if windowHandle != 'current':
    warnings.warn("Only 'current' window is supported for W3C compatibile browsers.")
   position = self.get_window_rect()
  else:
   position = self.execute(Command.GET_WINDOW_POSITION,
         {'windowHandle': windowHandle})['value']

  return {k: position[k] for k in ('x', 'y')}

2.0 获取窗口句柄

handle = driver.current_window_handle #获取当前窗口句柄
handles = driver.window_handles #获取所有窗口句柄

切换句柄可以使用

dr.switch_to.window(handle) #其中handle为获取到的窗口句柄

假设handles为获取到的所有窗口,则handles为一个list,可使用访问list的方法读取句柄。

dr.switch_to.windows(handles[0]) #切换到第一个窗口的句柄
dr.switch_to.windows(handles[-1]) #切换到最新窗口的句柄

以上这篇Python+selenium 获取浏览器窗口坐标、句柄的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python函数的周期性执行实现方法
Aug 13 Python
Python面向对象编程基础解析(一)
Oct 26 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
详解python之heapq模块及排序操作
Apr 04 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Python中常用的高阶函数实例详解
Feb 21 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
python读取文本中的坐标方法
Oct 14 #Python
Python 实现Windows开机运行某软件的方法
Oct 14 #Python
对python实时得到鼠标位置的示例讲解
Oct 14 #Python
python得到windows自启动列表的方法
Oct 14 #Python
python中协程实现TCP连接的实例分析
Oct 14 #Python
解决python "No module named pip" 的问题
Oct 13 #Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 #Python
You might like
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
浅谈python数据类型及类型转换
2017/12/18 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
flask框架路由常用定义方式总结
2019/07/23 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
在线课程:Skillshare
2019/04/02 全球购物
幼儿园家长会邀请函
2014/01/15 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
运动会开幕式解说词
2014/02/05 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
同意迁入证明模板
2014/10/26 职场文书
党校学习党性分析材料
2014/12/19 职场文书
面试复试通知单
2015/04/24 职场文书
2015年商场工作总结
2015/04/27 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python