Selenium:点击并按住特定位置,然后拖放元素

时间:2018-02-15 09:20:15

标签: selenium

我需要自动执行以下方案。我在网页上有一个表格,您可以将表格行拖放到彼此之间以切换它们的位置。

每个表行都有多个表数据,可以将您重定向到Web应用程序的不同部分。因此,只有通过单击并按住表格行中的第一个元素,才能进行拖动操作。

Selenium在动作构建器中提供了click_and_hold方法。问题是在表格行的中间点击并触发另一个我不想要的操作。

我试图点击并按住该行中的第一个表格数据元素,然后将其放在下一行,但它没有做任何事情。

我是这样做的:

browser.action.click_and_hold(table_data).move_to(second_table_row).release(table_data).perform

我的猜测是我需要点击并按住某个坐标,但我不知道该怎么做。

我使用ruby进行自动化,但其他语言中的任何有效示例都可以帮助我。

2 个答案:

答案 0 :(得分:1)

您可以在Java中使用此代码来执行上述操作: -

Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(table_data)
.moveToElement(second_table_row)
.release(table_data).build();

dragAndDrop.perform();

或者您可以直接使用dragAndDrop(x,y)函数: -

Actions actions = new Actions(webdriver);
WebElement srcElement = webdriver.findElement(By.xpath("source Xpath"));
WebElement targetElement = webdriver.findElement(By.xpath("Target Xpath"));
actions.dragAndDrop(srcElement, targetElement); 
actions.build().perform();

在Ruby中尝试上面的代码。希望这可以帮助你

答案 1 :(得分:0)

如果你问一个名为Capybara的ruby中有一个库,它是Selenium的包装器,可以帮助你完成使用drag_to方法尝试完成的任务,如:

start = page.find('table_data')
end = page.find('second_table_row')
start.drag_to(end)

使用它来进一步了解库: drag_to method description