2017-07-18 78 views
-2

我必須自動化使用聚合物UI構建的Slider。 使用Actions的當前代碼在Chrome版本35中工作正常,但在更高版本的Chrome中執行測試時無法拖放滑塊。我做了一些研究,但無法找到合適的解決方法來解決這個問題。我發現的是,它需要Javascript來解決這個問題。 有人可以分享可以幫助我的Javascript嗎?讓我知道你是否需要我的額外細節。 注意:我已經嘗試了對我無用的動作和機器人。使用Selenium Webdriver和Java的聚合物滑塊自動化

回答

0

/** * 這個函數將拖放sourceElement直到targetElement * @參數sourceElement * @參數targetElement */ 公共無效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); 
    }