2

我正在尝试在 Firefox selenium IDE 中使用 dragAndDrop,但它不起作用。

我是硒的忠实粉丝,但这个问题在最后一天让我发疯了。

我有一个 dragAndDrop 测试:

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

但它不会进行拖放。我已经看到它工作了几次,但不知道为什么/为什么现在不行。似乎有时有效,有时无效。

当我单击 IDE [查找] 按钮时,选择器本身可以工作。它突出了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 路由,所以能够测试它是关键!

4

1 回答 1

6

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

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

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

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

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

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

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

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

于 2013-04-29T12:33:08.297 回答