我需要自动执行以下方案。我在网页上有一个表格,您可以将表格行拖放到彼此之间以切换它们的位置。
每个表行都有多个表数据,可以将您重定向到Web应用程序的不同部分。因此,只有通过单击并按住表格行中的第一个元素,才能进行拖动操作。
Selenium在动作构建器中提供了click_and_hold方法。问题是在表格行的中间点击并触发另一个我不想要的操作。
我试图点击并按住该行中的第一个表格数据元素,然后将其放在下一行,但它没有做任何事情。
我是这样做的:
browser.action.click_and_hold(table_data).move_to(second_table_row).release(table_data).perform
我的猜测是我需要点击并按住某个坐标,但我不知道该怎么做。
我使用ruby进行自动化,但其他语言中的任何有效示例都可以帮助我。
答案 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