selenium dragAndDrop不拖放,虽然选择器似乎没问题

时间:2013-04-23 16:14:52

标签: firefox selenium drag-and-drop draggable selenium-ide

我正在尝试在Firefox selenium IDE中使用dragAndDrop,但它无效。

我是硒的忠实迷,但这个问题让我在最后一天疯狂。

我有一个dragAndDrop测试:

dragAndDrop
//div[contains(text(),"Lori F.")]/../../
0,160

但它不会拖放。我已经看到它工作了几次但不确定为什么/为什么不现在。似乎有时工作,有时不工作。

单击IDE [find]按钮时,选择器本身可以正常工作。它突出显示了我试图移动的DIV。所以这不是我在selenium中遇到的'通常'问题,实际上无法用正确的xpath选择对象。

它反对的HTML是:

<div class="fc-event-inner fc-event-skin" style="background-color: yellow;">
  <div class="fc-event-head fc-event-skin"></div>
  <div class="">
    <div class="fc-event-title">
      Lori F., Marshal H., Chris W., Kenna T.
    </div>
  </div>
  <div class="fc-event-bg"></div>
</div>

当实际步骤尝试运行时,浏览器会实际“闪烁”对象,表示它可以通过路径OK选择它,但不会发生拖放。

我尝试过使用div的dragAndDropToObject,但这不起作用,因为DIV本身需要一个x,y坐标才能“降落”在正确的位置。

我发现的两个问题[这可能有助于其他人] - 并且被淘汰 - 是1)放大/缩小屏幕上的x,y坐标弄乱了,所以我停止这样做了2)使用firefox中的元素检查器似乎也停止了它的工作。所以我相信我已经将这两种作为潜在原因消除了。

能够测试拖放是非常重要的,因为许多应用程序现在使用这种类型的东西采用各种ajax路由,因此能够测试它是关键!

1 个答案:

答案 0 :(得分:6)

有时拖放操作不正常(我不知道为什么)。

因此,您可以使用变通方法来模拟相同的操作,但以另一种方式:

1)mouseDownAt(locator,coordString) - 在这里按下鼠标左键并按住它

2)有时等待反应是有用的(例如等待工具提示出现或其他)。至少放小停顿以确保鼠标“捕获”对象并可以拖动它(测试可能运行得非常快,浏览器可能无法正常反应)

3)mouseMoveAt(locator,coordString) - 拖动你需要的地方

4)mouseUpAt(locator,coordString) - 释放鼠标按钮完成拖放

另外,您可以在这些步骤的开头添加setMouseSpeed(像素)以使鼠标移动缓慢(以确保它可以拖动)并最终将setMouseSpeed恢复为其默认值(默认值为10表示鼠标步长是10个像素。设置速度3-5像素会使鼠标移动得更慢。)

尝试通过设置不同的值来尝试:鼠标速度,并通过更改定位器(工具提示,阴影,如果有的话)等待(或者只是暂停1-2秒)等待(在mouseDownAt之后)。