使用Selenium Webdriver和Java的Polymer Slider Automation

时间:2017-07-18 06:08:21

标签: javascript selenium slider polymer

我必须自动化使用聚合物UI构建的Slider。 使用Actions的当前代码在Chrome版本35中运行良好,但在更高版本的Chrome版本中执行测试时无法拖放滑块。我做了一些研究,但无法找到合适的答案来解决这个问题。我发现,它需要Javascript来解决问题。 有人可以分享可以帮助我的Javascript吗?如果您需要我的其他详细信息,请与我们联系。 注意:我已经尝试过对我没用的动作和机器人。

1 个答案:

答案 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);
    }