public static void ClickElementSafly(IWebDriver driver, IWebElement element, int seconds = 15) { try { Helpers.FindElement(driver, element); DefaultWait <IWebElement> wait = new DefaultWait <IWebElement>(element); wait.Timeout = TimeSpan.FromSeconds(10);//timeoutInSeconds wait.PollingInterval = TimeSpan.FromMilliseconds(200); Func <IWebElement, bool> waiter = new Func <IWebElement, bool>((IWebElement ele) => { if (Helpers.Exists_safely(ele)) { if (ele.Enabled) { element.Click(); return(true); } } return(false); }); wait.Until(waiter); //new WebDriverWait(driver, TimeSpan.FromSeconds(seconds)).Until(ExpectedConditions.ElementToBeClickable(element)).Click(); } catch (Exception ex) { Assert.Fail("Helpers method 'ClickElementSafly'.\nElemement: \n" + element.GetAttribute("outerHTML") + "\n does not clickable.\nElement CssSelector:\n'" + Helpers.GetElementCssSelector(driver, element) + "'\nTest fail due to: {0}, {1}, {2}", ex.Message, ex.InnerException, ex); } }
public static void ClickElementJS(IWebDriver driver, IWebElement element, int seconds = 15) { try { Helpers.FindElement(driver, element); IWebElement elementButton = driver.FindElement(By.CssSelector(Helpers.GetElementCssSelector(driver, element))); ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", elementButton); } catch (Exception ex) { Assert.Fail("Helpers method 'ClickElementJS'.\nElemement: \n" + element.GetAttribute("outerHTML") + "\n does not clickable.\nElement CssSelector:\n'" + Helpers.GetElementCssSelector(driver, element) + "'\nTest fail due to: {0}, {1}, {2}", ex.Message, ex.InnerException, ex); } }
//best-click public static void WaitAndClickElement(IWebDriver driver, IWebElement element) { try { Helpers.WaitForLocatorLoad(driver, By.CssSelector(Helpers.GetElementCssSelector(driver, element))); Helpers.FindElement(driver, element); new Actions(driver).MoveToElement(element).Build().Perform(); Helpers.ScrollToElement(driver, element); Helpers.ClickElementSafly(driver, element); } catch (Exception ex) { Assert.Fail("Helpers method 'WaitAndClickElement' was failed.\nElement:\n" + Helpers.GetElementCssSelector(driver, element) + "\nTest fail due to: {0}, {1}, {2}", ex.Message, ex.InnerException, ex); } }