firefox - selenium DragAndDrop 不拖放,尽管选择器看起来没问题

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

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

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

我有一个拖放测试:

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 路由来处理此类内容,因此能够测试它是关键!

最佳答案

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

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

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

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

3) mouseMoveAt(locator, coordString) - 拖动到您需要的位置

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

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

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

关于firefox - selenium DragAndDrop 不拖放,尽管选择器看起来没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174297/

相关文章:

javascript - Greasemonkey 1.0 中的 jQuery 与使用 jQuery 的网站发生冲突

android - anchor 标记链接到android firefox中的pdf文件

html - 日期输入在 Firefox 中不起作用

Jquery UI 可拖动和可交换

ios - CCButton 在 touchMoved 实现时不起作用

javascript - 无法在 Firefox 中使用 jQuery 脚本

java - Selenium 网络驱动程序 : unable to get data from webElement. getText()

java - 无法点击 'Text' 内的 'dropdown list'

node.js - 在 Protractor 中为 e2e 测试设置 https 代理

javascript - CKEditor - 将图像拖放到带标题的图像中