自助建站免费信息发布网站,婚庆公司一条龙包括哪些,做网站哪里找,有什么网站做打印店pyautogui 配合 selenium 实现桌面坐标系定位元素坐标#xff0c;模拟真实鼠标行为。
场景#xff1a;当我需要点击某个元素#xff0c;或者触发浏览器的自动填充账号密码时#xff0c;自动化点击无效。但是想要模拟真实鼠标点击又需要元素的坐标通过pyautogui来实现。通过…pyautogui 配合 selenium 实现桌面坐标系定位元素坐标模拟真实鼠标行为。
场景当我需要点击某个元素或者触发浏览器的自动填充账号密码时自动化点击无效。但是想要模拟真实鼠标点击又需要元素的坐标通过pyautogui来实现。通过selenium node.location获取的坐标是相当于浏览器实际内容窗口的坐标系不能满足pyautogui 直接去自动化操作。这时可以通过浏览器js 获取菜单等实际边框大小计算出 实际的node.location零点位置相对于桌面坐标的坐标系从而得出元素在桌面坐标系的位置。这样不管怎么操作一般都不会相差太多。 注未考虑滑动条存在的情况 代码如下
def get_node_position(driver, node):获取元素相对于window窗口上的绝对坐标:param driver: 浏览器自动化对象:param node: 定位到的元素对象:return: window_rect driver.get_window_rect()menu driver.execute_script(return window.outerHeight - window.innerHeight)border driver.execute_script(return window.outerWidth - window.innerWidth)origin_y window_rect[y] menu - (border / 2)origin_x window_rect[x] (border / 2)return {x:node.location[x]origin_x,y:node.location[y]origin_y}
// pyautogui 左键点击
import pyautogui as gui
gui.click(100, 100)