Selenium-实现基于屏幕坐标的鼠标拖拽功能

最近在写一个web自动化相关的功能,需要基于屏幕坐标点(初始点坐标和结束点坐标)在网页上拖拽鼠标。仔细查看了Selenium中的ActionChains类,虽有鼠标拖拽相关的方法,但鼠标的初始位置必须规定为某个web元素,与我的需求不符。所以自己实现了它,代码如下:

def drag_screen_location(driver, start_coords=(0, 0), end_coords=(0, 0)):
    """
    :param driver: WebDriver
    :param start_coords: 初始点坐标
    :param end_coords: 结束点坐标
    """
    ac = ActionChains(driver)
    ac.w3c_actions.pointer_action.move_to_location(start_coords[0], start_coords[1]).click_and_hold()
    ac.w3c_actions.pointer_action.move_to_location(end_coords[0], end_coords[1]).release()
    ac.w3c_actions.perform()

值得一提的是,真实屏幕的坐标原点(0,0)的位置为屏幕的最左上角的点。而浏览器网页上坐标原点(0,0)的位置为页面显示区域的最左上角的点,计算坐标时需要格外注意。

posted @ 2022-07-28 16:31  阿苏聊测试开发  阅读(466)  评论(0编辑  收藏  举报