Bootstrap

【selenium拖拽ActionChains失效,另起炉灶之-借助pyautogui实现轨迹拖拽】

遇到问题:

在ActionChains处踩坑长时间逗留,不知如何求解,需要重新打开思路

解决问题:

借助pyautogui实现:
利用元素返回的相对浏览器的位置的方法, location[] 可以返回元素的坐标,再加上边框的位移量,确定好元素相对于电脑的位置,这个时候用浏览器最大化方法很有必要 driver.maximize_window(),可以固定浏览器相对于电脑位置的偏移量,这个偏移量需要大家自己来找,再利用 pyautogui 模拟鼠标操作完美的解决问题,鼠标操作实现电脑坐标点到点的轨迹拖动,后面的 duration 可以设置拖动时长。

	import pyautogui
    def move_and_drag(self, source, target):
        """
        使用pyautogui的拖拽
        :param source: 拖曳前元素
        :param target: 拖曳后元素
        :return:
        """
        # 定位起始元素
        source_loc = self.find_element(source)
        # 需要拖拽的位置元素
        target_loc = self.find_element(target)
        # 让鼠标移动到起点元素上
        pyautogui.moveTo(source_loc.location['x'] + 20, source_loc.location['y'] + 125)
        # 实现拖拽功能
        pyautogui.dragTo(target_loc.location['x'] + 20, target_loc.location['y'] + 155, duration=1)
        LOGGER.debug(f'执行鼠标拖曳,拖曳前位置:{source},拖曳后位置:{target}')

在这里插入图片描述 查看效果演示:

在这里插入图片描述

;