我必须自动化使用聚合物UI构建的Slider。 使用Actions的当前代码在Chrome版本35中运行良好,但在更高版本的Chrome版本中执行测试时无法拖放滑块。我做了一些研究,但无法找到合适的答案来解决这个问题。我发现,它需要Javascript来解决问题。 有人可以分享可以帮助我的Javascript吗?如果您需要我的其他详细信息,请与我们联系。 注意:我已经尝试过对我没用的动作和机器人。
答案 0 :(得分:0)
/ ** *此函数将sourceElement拖放到targetElement * @param sourceElement * @param targetElement * / public void sliderDragDrop(WebElement sourceElement,WebElement targetElement) { int xdraggerObj = sourceElement.getLocation()。x; int ydraggerObj = sourceElement.getLocation()。y;
int xLocatorTo=targetElement.getLocation().x;
int yLocatorTo=targetElement.getLocation().y;
String xTo=Integer.toString(xLocatorTo-xdraggerObj);
String yTo=Integer.toString(yLocatorTo-ydraggerObj);
((JavascriptExecutor) driver).executeScript(
"function simulate(f,c,d,e){var b,a=null;for(b in eventMatchers)if(eventMatchers[b].test(c)){a=b;break}if(!a)return!1;document.createEvent?(b=document.createEvent(a),a==\"HTMLEvents\"?b.initEvent(c,!0,!0):b.initMouseEvent(c,!0,!0,document.defaultView,0,d,e,d,e,!1,!1,!1,!1,0,null),f.dispatchEvent(b)):(a=document.createEventObject(),a.detail=0,a.screenX=d,a.screenY=e,a.clientX=d,a.clientY=e,a.ctrlKey=!1,a.altKey=!1,a.shiftKey=!1,a.metaKey=!1,a.button=1,f.fireEvent(\"on\"+c,a));return!0} var eventMatchers={HTMLEvents:/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,MouseEvents:/^(?:click|dblclick|mouse(?:down|up|over|move|out))$/}; "
+ "simulate(arguments[0],\"mousedown\",0,0); simulate(arguments[0],\"mousemove\",arguments[1],arguments[2]); simulate(arguments[0],\"mouseup\",arguments[1],arguments[2]); ",
sourceElement, xTo, yTo);
}