当前位置: 首页 > news >正文

极速建站深圳宣传片制作服务

极速建站,深圳宣传片制作服务,合肥营销型网站,怎样建设个人影视网站背景: 做图表自动化项目需要做拖拽操作,但是selenium提供的拖拽API无效,因此借用pyautogui实现拖拽,但是pyautogui的拖拽是基于Windows桌面坐标实现的,另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系&am…

背景:

做图表自动化项目需要做拖拽操作,但是selenium提供的拖拽API无效,因此借用pyautogui实现拖拽,但是pyautogui的拖拽是基于Windows桌面坐标实现的,另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系,要把浏览器中的坐标转换成桌面坐标需要考虑的因素比较多,如:屏幕的分辨率、缩放比例、浏览器窗口位置、页面是否有滚动、工具栏高度等,本文不考虑窗口内部滚动的情况,假设下图黑框表示window桌面。

下面看下浏览器中selenium识别区的构成:

浏览器窗口位置:

浏览器窗口位置为:

var win_x = window.screenX || window.screenLeft;
var win_y = window.screenY || window.screenTop;

由于我们在做自动化的时候窗口基本都会最大化,因此不考虑窗口位置也可以,如果窗口没有缩放移动位置上述两项值均为0,移动了就不为0了,如下:

浏览器工具栏高度:

浏览器工具栏高度为窗口外部高度-窗口内部高度,因为浏览器中的坐标是不包含浏览器的高度的。

var toolbarHeight = window.outerHeight - window.innerHeight;

因此浏览器在进行坐标转换时需要考虑到以上因素,还需要考虑到屏幕的分辨率,缩放比例。

分辨率,如下图:

分辨率为1920*1200缩放比例为150%实际上与分辨率1280*800的视觉效果是一样的。如果考虑缩放的话则,浏览器中的坐标(browserX,browserY)转换成桌面坐标为:

// 计算浏览器中坐标的桌面坐标
var desktopX =(win_x+ browserX) * (screenWidth/window.innerWidth) ;
var desktopY =(win_y+toolbarHeight/desktopScale+ browserY) * (screenHeight/ window.innerHeight );
console.log("桌面坐标 (x, y):", desktopX, desktopY);

这里工具栏高度需要做一个转换toolbarHeight/desktopScale,desktopScale表示屏幕缩放比例。

pyautogui实现拖拽如下:

# 移动到拖拽元素中心坐标
pyautogui.moveTo(src_center_loc_x, src_center_loc_y, duration=1, tween=pyautogui.linear)
# 落到目标位置
pyautogui.dragTo(to_center_loc_x, to_center_loc_y, duration=2, button='left')

完整代码:

def browser_2_windows_coordinates_v2(self, browserX,browserY, screenWidth=1920, screenHeight=1200, desktopScale=1.5):# location = self.get_element_location(element)# x, y = location['left_up'][0], location['left_up'][1]script = '''function getDesktopCoordinates(browserX, browserY,screenWidth,screenHeight,desktopScale) {{// 浏览器中的坐标(x, y)var browserX = browserX;var browserY = browserY;// 屏幕分辨率var screenWidth = screenWidth;var screenHeight = screenHeight;// 桌面缩放比例var desktopScale = desktopScale;//- 浏览器窗口左上角的桌面坐标为(win_x, win_y)。var win_x = window.screenX || window.screenLeft;var win_y = window.screenY || window.screenTop;//计算工具栏高度var toolbarHeight = window.outerHeight - window.innerHeight;// 计算桌面坐标var desktopX =(win_x+ browserX) * (screenWidth/window.innerWidth) ;var desktopY =(win_y+toolbarHeight/desktopScale+ browserY) * (screenHeight/ window.innerHeight );console.log("桌面坐标 (x, y):", desktopX, desktopY);// 创建包含坐标的对象var desktopCoordinates = {{desktopX: desktopX,desktopY: desktopY}};return desktopCoordinates;}}var coordinates = getDesktopCoordinates({browserX}, {browserY},{screenWidth},{screenHeight},{desktopScale});return coordinates;'''.format(browserX=browserX, browserY=browserY, screenWidth=screenWidth, screenHeight=screenHeight,desktopScale=desktopScale)logging.info(script)desktopCoordinates = self.driver.execute_script(script)logging.info(desktopCoordinates)return desktopCoordinates

http://www.laogonggong.com/news/97446.html

相关文章:

  • 公司企业网站设计尺寸中国未来楼市走势分析
  • 中信建设官方网站软件下载室内设计效果图多少钱一张
  • 深圳市城乡建设部网站首页营销型网站建设的资讯
  • 网站备案帐户有什么用安装两个wordpress
  • 网站推广方式推荐企业网站架构
  • 可视网站开发工具学习电子商务网站建设与管理
  • 青岛做模板网站的公司深圳 商城 网站建设
  • 郑州网站如何制作广州天河网站建设
  • 汕头专业建站怎么做网站官方电话
  • 广东专业做网站排名公司哪家好移动网站怎么建设
  • 网站开发 岗位及职责市场营销手段13种手段
  • 哪个视频网站做视频最赚钱唐尧文化 网站建设工作总结
  • 影视网站如何做seo使用ftp修改网站图片
  • 部队网站模板jsp网络营销薪酬公司
  • 济南行业网站建设当前网站开发用什么软件
  • 网站开发图片压缩上传报酬网站模块 带采集
  • 欧美网站特点手机网站欢迎页面设计
  • python搭建个人网站网络营销的特点不包括
  • 酒泉网站seo网站装修怎么做
  • 免费 成品模板网站黄冈网站建设价格
  • 学校二级网站建设企业官网怎么注册
  • 申请一个免费的网站空间佛山营销型网站设计
  • 湖南省住房与城乡建设厅网站怎样创办自己的公众号
  • 西安网站制作模板手机移动端网站怎么做seo
  • h5网站开发总结wordpress模版做网站
  • 做特卖的购物网站求推荐建设网站
  • 网站字体选择建设网站大全
  • 外国网站的风格医疗网站报价方案
  • 织梦仿站时怎么取俩个网站的页面整合公司网站建设阿里云
  • 怎么做网站的步骤店铺装修一平方大概多少钱