Python+selenium点击网页上指定坐标的实例


Posted in Python onJuly 05, 2019

例如有些页面元素很难获取,但是位置很固定,那么可以直接用坐标来进行操作

例如要对页面上的(x:200, y:100)进行操作,可以用如下代码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

dr = webdriver.Chrome()
dr.get('http://www.baidu.com')
ActionChains(dr).move_by_offset(200, 100).click().perform() # 鼠标左键点击, 200为x坐标, 100为y坐标
ActionChains(dr).move_by_offset(200, 100).context_click().perform() # 鼠标右键点击

运行效果(右键):

Python+selenium点击网页上指定坐标的实例

需要注意的是,每次移动都是在上一次坐标的基础上(即坐标值是累积的),如上的代码实际运行时,点击完左键再点击右键,坐标会变成(400, 200)。

可以用封装来抵消这种累积(点击完之后将鼠标坐标恢复),代码如下:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

def click_locxy(dr, x, y, left_click=True):
  '''
  dr:浏览器
  x:页面x坐标
  y:页面y坐标
  left_click:True为鼠标左键点击,否则为右键点击
  '''
  if left_click:
    ActionChains(dr).move_by_offset(x, y).click().perform()
  else:
    ActionChains(dr).move_by_offset(x, y).context_click().perform()
  ActionChains(dr).move_by_offset(-x, -y).perform() # 将鼠标位置恢复到移动前

if __name__ == "__main__":
  dr = webdriver.Chrome()
  dr.get('http://www.baidu.com')
  click_locxy(dr, 100, 0) # 左键点击
  click_locxy(dr, 100, 100, left_click=False) # 右键点击

以上这篇Python+selenium点击网页上指定坐标的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中实现贪婪排名算法的教程
Apr 17 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
Python存储读取HDF5文件代码解析
Nov 25 Python
python单例模式的应用场景实例讲解
Feb 24 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 #Python
python获取txt文件词向量过程详解
Jul 05 #Python
Python 的字典(Dict)是如何存储的
Jul 05 #Python
关于Python 的简单栅格图像边界提取方法
Jul 05 #Python
Python3+Appium安装使用教程
Jul 05 #Python
Python叠加两幅栅格图像的实现方法
Jul 05 #Python
用vue.js组件模拟v-model指令实例方法
Jul 05 #Python
You might like
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
详解Python3中字符串中的数字提取方法
2017/01/14 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
python实现简单的五子棋游戏
2020/09/01 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
应届医学毕业生求职信分享
2013/12/02 职场文书
初中女生自我鉴定
2013/12/19 职场文书
我的画教学反思
2014/04/28 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis