In recent past, I encountered one scenario where you need to automate pop-up in the application. I am blogging this, as many of you may have faced the same issue.
You need to automate the below scenario. There is a link present on the Web-page, Pop-up gets opened as you click on the link & perform some action on this pop-up.
Now you may wonder what's the big deal in just automating above scenario.
I also thought in the same way but my scripts were failing.
After investigation I found that when I tried to switch to pop up it was not there,meaning till that time pop up didn't get open.
I tried to apply Thread.Sleep ,it worked fine for me. But again using Thread.Sleep can cause many issues like -
Keep automating......
You need to automate the below scenario. There is a link present on the Web-page, Pop-up gets opened as you click on the link & perform some action on this pop-up.
Now you may wonder what's the big deal in just automating above scenario.
I also thought in the same way but my scripts were failing.
After investigation I found that when I tried to switch to pop up it was not there,meaning till that time pop up didn't get open.
I tried to apply Thread.Sleep ,it worked fine for me. But again using Thread.Sleep can cause many issues like -
- This may fail if opening a pop up takes longer time
- If pop up gets open up in fraction of seconds then it will be waste of time.
- It is not the good practice to use Thread.Sleep and be last option we should think of when synchronize the browser.
private void clickWaitForPopoUp(WebDriver driver, By by,int waitTime) { final int currentWindows = driver.getWindowHandles().size(); driver.findElement(by).click(); WebDriverWait wait = new WebDriverWait(driver, waitTime); wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return (d.getWindowHandles().size() != currentWindows); } }); }Now I am calling above method and passing link and wait time when want to click and popup....
Keep automating......