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 04 Python
Python实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
python集合用法实例分析
May 30 Python
Django自定义认证方式用法示例
Jun 23 Python
Python if语句知识点用法总结
Jun 10 Python
windows下python安装小白入门教程
Sep 18 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
Pytorch to(device)用法
Jan 08 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python 指定源路径来解决import问题的操作
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
phpBB BBcode处理的漏洞
2006/10/09 PHP
Dedecms常用函数解析
2008/02/01 PHP
使用PHP批量生成随机用户名
2008/07/10 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
华为慧通笔试题
2016/04/22 面试题
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
大学生求职简历的自我评价
2013/10/21 职场文书
学生个人的自我评价分享
2013/11/05 职场文书
致接力运动员广播稿
2014/02/17 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL