Execution process difference between below two statements.
driver.findElement(By.xpath("//input[@value='Save']")).click();((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
WebDriver click() simulates real user interaction with the UI. I will be performed (in most browsers) by sending a native event to the browser, and it has to be visible in order to click on it. From the docs
...if click() is done by sending a native event (which is the default on most browsers/platforms)
There are some preconditions for an element to be clicked. The element must be visible and it must have a height and width greater then 0.
JavaScript click() on the other hand
Executes JavaScript in the context of the currently selected frame or window.
Regardless if the WebElement is visible or not. This approach misses the idea of user interaction Selenium tries to simulate.
in simple terms. Webdriver uses a native browser events to click on element, and javascript uses JavaScrip to click on the element.
If I remember correctly Selenium 1, was using JavaScript for all it's action but they changed this in webdriver (Selenium 2) and now they are using native browser events to interact with browser. And for this reason you required corresponding support from browser (geckodriver, IEDriver, Chromedriver, etc..). JavaScript engine on the other hand is inbuilt in all the major browsers and so you don't require this extra executables.