selenium中录制拖拽动作

今天工作中遇到了selenium中录制拖拽动作需求:在同一个页面上,将一个table中的元素拖拽到另外一个table中。

通过查看帮助文档是使用dragAndDrop或类似的命令。根据使用方法dragAndDrop(locator, movementsString),写入下面的脚本:

<tr>
<td>dragAndDropToObject</td>
<td>//div/div/div/table/tbody/tr[2]/td/div</td>
<td>+652,+638</td>
</tr>

运行后,命令运行通过但是并没有实现拖拽动作。从网上百度后,发现好多网友说dragAndDrop命令不太好用,可以通过鼠标事件模拟拖拽。因此借鉴过来,写入命令如下:

<tr>
<td>mouseDownAt</td>
<td>//div/div/div/table/tbody/tr[2]/td/div</td>
<td>+394,+156</td>
</tr>
<tr>
<td>mouseMove</td>
<td>//div/div/div/table/tbody/tr[2]/td/div</td>
<td></td>
</tr>
<tr>
<td>mouseUpAt</td>
<td>//td[2]/div</td>
<td>+652,+638</td>
</tr>

运行后实现了拖拽动作。具体的mouseDownAt、mouseMove、mouseUpAt命令可以查看selenium帮助文档。有其它网友是通过mouseDownAt、mouseMoveAt、mouseUpAt命令实现的,感觉思想差不多吧,只有能实现效果就可以。

顺便说一下,由于mouseDownAt、mouseMoveAt、mouseUpAt命令的第二个参数都是坐标,那么获得元素的具体坐标也很关键。之前为如何查看页面元素坐标纠结,后来同事说有的截图软件可以查看,突然想起以前HyperSnap截图软件是可以显示坐标的。于是乎下载安装,坐标问题迎刃而解。

接下来将继续学习dragAndDrop命令,如果大家有使用成功的希望分享下。

你可能感兴趣的:(selenium中录制拖拽动作)