Ferrum mouse.up 不适用于点击和拖动方法

Ferrum mouse.up doesn't work for click & drag method

我正在编写一个在 Cuprite::Ferrum 上运行的测试,我需要在其中单击一个元素并将其拖放到页面上另一个元素的下方。当我手动执行时,它工作正常,但是当我尝试将其放入测试中时,它几乎可以工作,但不完全是。

我找不到他为 Ferrum 或 Cuprite 拖放 API,所以我创建了类似的东西:

  def click_and_drag(draggable, droppable, offset_x, offset_y)
    x1, y1 = draggable.native.node.find_position
    x2, y2 = droppable.native.node.find_position

    mouse = page.driver.browser.mouse
    mouse.move(x: x1, y: y1)
    mouse.down
    mouse.move(x: x2 + offset_x, y: y2 + offset_y)
    mouse.up
  end

非常简单,在到达 mouse.up 部分之前工作正常。需要拾取的元素在draggable = page.find(element)找到,需要放到droppable = page.find(element).

下方

一切都很顺利,直到方法到达 mouse.up 部分,拖动的元素应该被拖放到新的位置,但它只是回到起始位置。

我指的是 Ferrum 文档 https://www.rubydoc.info/gems/ferrum/0.5/Ferrum/Mouse 但找不到答案。

因此,该方法有效并且一切正常,问题出在 offset_x 和 offset_y,如果您以某种方式找到它并想​​使用它,请将其保留在中间,并保留它们小!