/// <summary> /// Attempts to check if the supplied element is interactable. I.e. has the greatest Z index in its DOM area and is enabled. /// </summary> /// <param name="driver"></param> /// <param name="elementToQuery">The element to query.</param> /// <returns>If the element is interactable.</returns> public static bool IsInteractable(this IWebDriver driver, IWebElement elementToQuery) { var js = String.Format("return document.elementFromPoint({0}, {1});", elementToQuery.Location.X, elementToQuery.Location.Y); IJavaScriptExecutor executor = (IJavaScriptExecutor)driver; IWebElement elementFound = (IWebElement)executor.ExecuteScript(js); return(WebDriverSupport.ElementsMatch(elementToQuery, elementFound) && elementToQuery.Enabled); }