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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
python抽象基类用法实例分析
Jun 04 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
python实现日常记账本小程序
Mar 10 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
Pytorch释放显存占用方式
Jan 13 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
python实现图片压缩代码实例
2019/08/12 Python
python实现证件照换底功能
2019/08/20 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
全球度假村:Club Med
2017/11/27 全球购物
八项规定整改措施
2014/02/12 职场文书
初三开学计划书
2014/04/27 职场文书
投标承诺书怎么写
2014/05/24 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
长江三峡导游词
2015/01/31 职场文书
初一年级组工作总结
2015/08/12 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python