场景:
需要将左侧菜单栏的元素拖拽到右侧画布上
思路:
定位到左侧的RDS抽取元素,通过ActionChains的drag_and_drop_by_offset方法将元素拖拽到指定坐标位置
问题:
核心代码如下:
rds_ele = driver.find_element_by_xpath('//div[@role="tablist"]/div[1]/div[2]/div/div/div[1]')
ActionChains(driver).drag_and_drop_by_offset(rds_ele, xoffset=300, yoffset=400).perform()
按照上述正确编写代码后(确定找到了元素),发现并没有出现拖拽效果
换了台mac,发现拖拽到了鼠标所停留的位置,也不是实际设置位置
问题分析:
在网上查了相关资料,大概是我所拖拽的元素其实本身不能拖拽,是点击这个元素拖拽生成了一个新的元素,拖拽的并非本身这个元素,而是新生成的这个元素
但是新生成的这个元素对我而言是要拖拽以后我才能拿得到的,所以应该不能直接使用drag_and_drop_by_offset方法了
解决思路:
需要模拟鼠标在左侧RDS抽取元素位置点击左键,移动一定的距离到右侧画布上,松开鼠标左键
引入pyautogui库模拟鼠标事件
解决结果:
核心代码如下:
rds_ele = driver.find_element_by_xpath('//div[@role="tablist"]/div[1]/div[2]/