The below code is working for local executions. But when I execute it on Selenium Grid (remote execution), I'm getting the error:
invalid argument: File not found : /Users/egeiper/Develop/QA-refresh/src/test/resources/images/sampleImage1.jpg
I know that file exists, and method is working locally. But what should I change in the code for remote execution ? Thanks !
public void uploadSampleImagesOnManager(final String fileName) {
// This will be used for shadow (open-agent) upload DOM elements
final String jsDropFile =
"var tgt=arguments[0],e=document.createElement('input');e.type='"
+ "file';e.addEventListener('change',function(event){var dataTrans"
+ "fer={dropEffect:'',effectAllowed:'all',files:e.files,items:{},t"
+ "ypes:[],setData:function(format,data){},getData:function(format"
+ "){}};var emit=function(event,target){var evt=document.createEve"
+ "nt('Event');evt.initEvent(event,true,false);evt.dataTransfer=da"
+ "taTransfer;target.dispatchEvent(evt);};emit('dragenter',tgt);em"
+ "it('dragover',tgt);emit('drop',tgt);document.body.removeChild(e"
+ ");},false);document.body.appendChild(e);return e;";
centerElement(sampleImageUploadContainer);
final WebElement element = (WebElement) ((JavascriptExecutor) getDriver()).executeScript(jsDropFile, sampleImageUploadContainer);
uploadFile(element, fileName, "src/test/resources/images/");
}
protected void uploadFile(final WebElement element, final String fileName, final String path) {
final String serverProperty = System.getProperty("SERVER");
if (serverProperty != null && !"local".equals(serverProperty)) {
((RemoteWebDriver) getDriver()).setFileDetector(new LocalFileDetector());
}
element.sendKeys(new File(path + fileName).getAbsolutePath());
}