How to use Sendkeys() without finding element on web page when element is already focused and waiting for input
Try this - WebElement currentElement = driver.switchTo().activeElement();
Refer to this for more details - https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html#activeElement--
Alternatively you can use the ROBOT function as a workaround.For example: to send 123456 you may use
Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_1);robot.keyRelease(KeyEvent.VK_1);robot.keyPress(KeyEvent.VK_2);robot.keyRelease(KeyEvent.VK_2);robot.keyPress(KeyEvent.VK_3);robot.keyRelease(KeyEvent.VK_3);robot.keyPress(KeyEvent.VK_4);robot.keyRelease(KeyEvent.VK_4);robot.keyPress(KeyEvent.VK_5);robot.keyRelease(KeyEvent.VK_5);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_ENTER);robot.keyRelease(KeyEvent.VK_ENTER);
I have also used the Sikuli sendkeys feature in the past succesfully.
Use below code for the same :
driver.findElement(By.tagName("body")).sendKeys(Keys.TAB);
I have tried the demo and its fine
public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.google.com"); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); Thread.sleep(1000); driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); Thread.sleep(1000); driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); Thread.sleep(1000); driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); Thread.sleep(1000); driver.findElement(By.tagName("body")).sendKeys(Keys.TAB); System.out.println("OK"); }