Selenium Drag-and-drop in IE11 using java script workaround in java -
i trying use java script workaround drag , drop working selenium web driver java on ie11 , chrome?? using selenium 3.4 java 1.8
here code :
**web element initialisation** @findby(how = how.css, css =".work-card-description.searchable-field") private webelement wedragfrom; @findby(how = how.css,css = "div.resource-schedule.resource-ui-droppable div.hour-line:nth-of-type(11)") private webelement wedragto; **code** protected void draganddrop( webelement from, webelement to)throws ioexception,interruptedexception { string basepath = new file("").getabsolutepath(); string jquery_url = "http://code.jquery.com/jquery-1.11.2.min.js"; final string jquery_load_script =(basepath + "/src/test/resources/jquery_load_helper.js"); string jqueryloader = readfile(jquery_load_script); driver.manage().timeouts().setscripttimeout(10, timeunit.seconds); javascriptexecutor js = (javascriptexecutor) driver; js.executeasyncscript(jqueryloader,jquery_url); js.executescript("jquery(function($) { " + " $('input[name=\"q\"]').val('bada-bing').closest('form').submit(); " + " }); "); string filepath =(basepath + "/src/test/resources/drag_and_drop_helper.js"); stringbuffer buffer = new stringbuffer(); string line; bufferedreader br = new bufferedreader(new filereader(filepath)); while((line = br.readline()) != null) { buffer.append(line); } string javascript = buffer.tostring(); javascript = javascript + "$('"+from+"').simulatedragdrop({ droptarget: '"+to+"'});"; ((javascriptexecutor)driver).executescript(javascript); thread.sleep(1000); } error
org.openqa.selenium.javascriptexception: error: syntax error, unrecognized expression: [[firefoxdriver: firefox on (a57f702c-e519-4a71-98f8-015da1fba509)] -> css selector: .work-card-description.searchable-field] build info: version: '3.4.0', revision: 'unknown', time: 'unknown' system info: host: driver info: org.openqa.selenium.firefox.firefoxdriver rotatable=false, timeouts={implicit=0.0, pageload=300000.0, script=30000.0}, pageloadstrategy=normal, platform=any, specificationlevel=0.0, moz:accessibilitychecks=false, acceptinsecurecerts=true, browserversion=55.0.3, platformversion=6.3, moz:processid=6420.0, browsername=firefox, javascriptenabled=true, platformname=windows_nt}] session id: a57f702c-e519-4a71-98f8-015da1fba509 @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:62) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:423) @ org.openqa.selenium.remote.http.w3chttpresponsecodec.createexception(w3chttpresponsecodec.java:150) @ org.openqa.selenium.remote.http.w3chttpresponsecodec.decode(w3chttpresponsecodec.java:115) @ org.openqa.selenium.remote.http.w3chttpresponsecodec.decode(w3chttpresponsecodec.java:45) @ org.openqa.selenium.remote.httpcommandexecutor.execute(httpcommandexecutor.java:164) @ org.openqa.selenium.remote.service.drivercommandexecutor.execute(drivercommandexecutor.java:82) @ org.openqa.selenium.remote.remotewebdriver.execute(remotewebdriver.java:637) @ org.openqa.selenium.remote.remotewebdriver.executescript(remotewebdriver.java:573) @ pageobject.optimiseschedulepage.draganddrop(optimiseschedulepage.java:180) @ pageobject.optimiseschedulepage.dragdropjobintodiary(optimiseschedulepage.java:120) @ webadmin.functionalitytest.draganddrop(functionalitytest.java:71) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ org.testng.internal.methodinvocationhelper.invokemethod(methodinvocationhelper.java:108) @ org.testng.internal.invoker.invokemethod(invoker.java:661) @ org.testng.internal.invoker.invoketestmethod(invoker.java:869) @ org.testng.internal.invoker.invoketestmethods(invoker.java:1193) @ org.testng.internal.testmethodworker.invoketestmethods(testmethodworker.java:126) @ org.testng.internal.testmethodworker.run(testmethodworker.java:109) @ org.testng.testrunner.privaterun(testrunner.java:744) @ org.testng.testrunner.run(testrunner.java:602) @ org.testng.suiterunner.runtest(suiterunner.java:380) @ org.testng.suiterunner.runsequentially(suiterunner.java:375) @ org.testng.suiterunner.privaterun(suiterunner.java:340) @ org.testng.suiterunner.run(suiterunner.java:289) @ org.testng.suiterunnerworker.runsuite(suiterunnerworker.java:52) @ org.testng.suiterunnerworker.run(suiterunnerworker.java:86) @ org.testng.testng.runsuitessequentially(testng.java:1301) @ org.testng.testng.runsuiteslocally(testng.java:1226) @ org.testng.testng.runsuites(testng.java:1144) @ org.testng.testng.run(testng.java:1115) @ org.testng.idearemotetestng.run(idearemotetestng.java:72) @ org.testng.remotetestngstarter.main(remotetestngstarter.java:123)
please me have tried workaround , action class not working @ me on both browser
some of other workaround on internet gets execute without error , doing nothing
as per knowledge in reading many posts think using java-script(drag_and_drop_helper.js) work sure , know somewhere missing something.
**javascript(drag_and_drop_helper)** (function( $ ) { $.fn.simulatedragdrop = function(options) { return this.each(function() { new $.simulatedragdrop(this, options); }); }; $.simulatedragdrop = function(elem, options) { this.options = options; this.simulateevent(elem, options); }; $.extend($.simulatedragdrop.prototype, { simulateevent: function(elem, options) { /*simulating drag start*/ var type = 'dragstart'; var event = this.createevent(type); this.dispatchevent(elem, type, event); /*simulating drop*/ type = 'drop'; var dropevent = this.createevent(type, {}); dropevent.datatransfer = event.datatransfer; this.dispatchevent($(options.droptarget)[0], type, dropevent); /*simulating drag end*/ type = 'dragend'; var dragendevent = this.createevent(type, {}); dragendevent.datatransfer = event.datatransfer; this.dispatchevent(elem, type, dragendevent); }, createevent: function(type) { var event = document.createevent("customevent"); event.initcustomevent(type, true, true, null); event.datatransfer = { data: { }, setdata: function(type, val){ this.data[type] = val; }, getdata: function(type){ return this.data[type]; } }; return event; }, dispatchevent: function(elem, type, event) { if(elem.dispatchevent) { elem.dispatchevent(event); }else if( elem.fireevent ) { elem.fireevent("on"+type, event); } } }); })(jquery);
Comments
Post a Comment