将动态webelement值传递给Javascript方法以在HTML5中执行拖放操作

时间:2014-07-07 16:05:48

标签: java javascript selenium selenium-webdriver webdriver

我正在尝试使用Selenium for Java在HTML5中执行拖放操作。为此目的,Action个对象不能used

我试过了,但现在我被困住了:

 @driver.execute_script(dnd_javascript+"$('#column-a').simulateDragDrop({ dropTarget: '#column-b'});")

参与拖放的两个元素都是动态的。我需要根据它们的位置为这两个元素生成动态XPath。

如何将值传递给JavaScript代码?

2 个答案:

答案 0 :(得分:0)

执行此操作的方法是将占位符放入javascript String中,然后将元素作为varargs参数提供给JavascriptExecutor的executeScript。例如:

WebDriver driver = ...;
WebElement dragged = ...;
WebElement dropArea = ...;
((JavascriptExecutor) driver).executeScript("$(arguments[0]).simulateDragDrop({ dropTarget: arguments[1]});", dragged, dropArea);

答案 1 :(得分:-1)

您可以将Actions类用于此目的。

Actions objActions = new Actions(objWebDriver);
objActions.dragAndDrop(objWebDriver.findElement(By.xpath("expression1")), objWebDriver.findElement(By.xpath("expression2")));