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字符串和文件操作常用函数分析
Apr 08 Python
Python利用IPython提高开发效率
Aug 10 Python
Python进阶之尾递归的用法实例
Jan 31 Python
TensorFlow如何实现反向传播
Feb 06 Python
python字符串string的内置方法实例详解
May 14 Python
详解Django 中是否使用时区的区别
Jun 14 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python实现简单加密解密机制
Mar 19 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
Python hashlib常见摘要算法详解
Jan 13 Python
django使用多个数据库的方法实例
Mar 04 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读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python制作CSDN免积分下载器
2015/03/10 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python作用域用法实例详解
2016/03/15 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
党员个人思想汇报
2013/12/28 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
单位消防安全责任书
2014/07/23 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
失职检讨书大全
2015/01/26 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015选调生工作总结
2015/07/24 职场文书
中学总务处工作总结
2015/08/12 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
关于的python五子棋的算法
2022/05/02 Python