While working in qa company, I have experienced this problem in many automation projects. There are multiple solutions to handle this blocker -
Solution 1 -
Use Javascript Executor:
driver.FindElement(By.Id("UserName")).SendKeys("test");
driver.FindElement(By.Id("Password")).SendKeys("test123");
// driver.FindElement(By.XPath("//*[@id="btnSubmit"]")).Click();
IWebElement element = driver.findElement(By.XPath("//*[@id="btnSubmit"]"));
IJavaScriptExecutor JsExecutor = (IJavaScriptExecutor)driver;
JsExecutor.ExecuteScript("arguments[0].click();", element);
Solution 2 -
Using Keyboard Events:
driver.FindElement(By.Id("UserName")).SendKeys("test");
driver.FindElement(By.Id("Password")).SendKeys("test123");
// driver.FindElement(By.XPath("//*[@id="btnSubmit"]")).Click();
driver.findElement(By.XPath("//*[@id="btnSubmit"]")).sendKeys(Keys.Enter);
Solution 3 -
Using Action class:
driver.FindElement(By.Id("UserName")).SendKeys("test");
driver.FindElement(By.Id("Password")).SendKeys("test123");
// driver.FindElement(By.XPath("//*[@id="btnSubmit"]")).Click();
IWebElement element = driver.FindElement(By.XPath("//*[@id="btnSubmit"]"));
Actions builder = new Actions(driver);
builder.MoveToElement(element).Click().Perform();
Solution 4 -
By Double Click the Submit button:
driver.FindElement(By.Id("UserName")).SendKeys("test");
driver.FindElement(By.Id("Password")).SendKeys("test123");
// driver.FindElement(By.XPath("//*[@id="btnSubmit"]")).Click();
IWebElement element = driver.FindElement(By.XPath("//*[@id="btnSubmit"]"));
Actions builder = new Actions(driver);
builder.MoveToElement(element).DoubleClick().Perform();
Solution 5 -
Using Co-ordinates [Least Preferred]:
driver.FindElement(By.Id("UserName")).SendKeys("test");
driver.FindElement(By.Id("Password")).SendKeys("test123");
// driver.FindElement(By.XPath("//*[@id="btnSubmit"]")).Click();
IWebElement element = driver.FindElement(By.XPath("//*[@id="btnSubmit"]"));
Actions builder = new Actions(driver);
builder.move_by_offset(X coordinates, Y coordinates).click().perform()
where 'X' & 'Y' coordinates should be known.