首页 > 解决方案 > Selenium::WebDriver::Error - 使用 WATIR 进行拖放操作

问题描述

我们正在尝试使用 WATIR 模拟拖放操作,但是,我们似乎得到了一些奇怪的错误作为回报。

首先,我们存储“拖动项目”及其目的地:

drag = @browser.trs(:draggable => 'true')
drop = drag[0]
destination = drag[1]

我们运行组合鼠标事件的第一个测试:

drop.fire_event("onmousedown")
@browser.driver.action.click_and_hold(drop).perform
@browser.driver.action.move_to(destination).click.perform
drop.fire_event("onmouseup")

我们运行的第二个测试使用了拖放方法: @browser.driver.action.drag_and_drop_by(drop, 0, 500).perform

但是,这两种尝试都会导致相同的错误:

Selenium::WebDriver::Error::InvalidArgumentError: data did not match any variant of untagged enum PointerActionItem at line 1 column 225
./features/W1-Administering_a_Shotlist/W1.1-Shotlists/step_definitions/W1.1.4-Reorder_Shotlist.rb:10:in `/^SA drag the selected shotlist to reorder$/'
./features/W1-Administering_a_Shotlist/W1.1-Shotlists/W1.1.4-Reorder_Shotlist.feature:9:in `When SA drag the selected shotlist to reorder'

我们认为这个错误是指@browser.driver.action.这两种方法中的引用,但不确定如何解决这个问题。

任何建议都将受到欢迎!


编辑 26/11/2018

根据以下建议,我们drag_and_drop_on使用以下代码尝试了该方法:

draggable = @browser.trs(:draggable => 'true')
target = draggable[0]
destination = draggable[1]
target.drag_and_drop_on destination
sleep(5)

虽然这没有产生错误,但它似乎也没有产生任何结果(即将元素移动到target元素的位置destination)。

标签: firefoxselenium-webdriverdrag-and-dropautomated-testswatir

解决方案


该错误是由 geckodriver 0.22 https://github.com/mozilla/geckodriver/issues/1375中的错误引起的

尝试降级 geckodriver,看看它是否有效。

Watir 有一个直接的方法:

draggable.drag_and_drop_on droppable

推荐阅读