Close Flipkart open pop-up and go to main window using Selenium - javascript

WebDriver driver = new FirefoxDriver();
driver.get("https://www.flipkart.com");
driver.manage().window().maximize();
String parentWindowHandler = driver.getWindowHandle(); // Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler);
I tried it by switching to main window also. Please add valuable input or code to close the pop up.

You can try using the java Robot API by importing java.awt.Robot libraries. An example is here:
One solution for File Upload using Java Robot API with Selenium WebDriver by Java
You can try to use it similarly to press the Esc key. Pressing Esc on flipkart website gets rid of the pop-up.

The pop-up which appears on Flipkart's website is a simple HTML modal. Window handle is used when a new pop-up window needs to be accessed.
To close the pop-up just click on the cross on the top right corner of the pop-up. Use waits to ensure that selenium finds the WebElement.
Try this:
driver.get("https://www.flipkart.com");
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement cross = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.className("close-icon")));
cross.click()

Related

browser pop up is not closing in selenium

After launching the url there is a email pop up that i am trying to close. i have written xpath and able to find the close icon with that. but when i am trying to execute it is not closing. then i added implicitly wait for the element to be visible and then trying to close. still it is not closing.
Can you please tell me what would be the reasons for such cases and how it can be solved.
and Submit button is also not clicking i have given the correct xpath.
Thanks in advance..
below is the code snippet.
public static void main(String[] args) {
WebDriver driver;
System.setProperty("webdriver.chrome.driver", "E:\\Softwares\\Chromedriver.exe");
driver = new ChromeDriver();
driver.get("https://html.com/input-type-file/");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
WebElement closeButon = driver.findElement(By.xpath("//a[#class='om-close miami-element-close miami-close']"));
if(closeButon.isDisplayed())
{
System.out.println("close Buton is there.. ");
closeButon.click();
System.out.println("close Buton closed ");
}
driver.findElement(By.xpath("//input[#name='fileupload']")).sendKeys("E:\\Users\\laxman_p\\Desktop\\PromoFeature.txt");
//Submit button
driver.findElement(By.xpath("//*[#id='post-206']/div/div[3]/form/input[2]")).click();
}
If you cant close it by xpath,
I think this issue can be related with focused window,
You need to use getWindowHandle and switchTo methods to focus this pop-up.
After that you will be able to make process on this pop-up.
driver.getWindowHandles()
returns set of windows.
driver.switchTo.window(windowId);
will switch you to window which you want to focus on.

Unable to click ViewSeats button in redbus site using selenium

I was trying to automate a flow using redbus site. I was not able to click View Seats button in the second page after selecting journey details in the first page of RedBus site. I have tried clicking using javascript click() as well.
Please find the code below:
WebDriver ffdri = new FirefoxDriver();
ffdri.get("https://www.redbus.in/Booking/SelectBus.aspx? fromCityId=123&toCityId=122&doj=10-Oct-2015&busType=Any&opId=0");
ffdri.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(ffdri,20);
wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("Travels")));
JavascriptExecutor js = (JavascriptExecutor) ffdri;
js.executeScript("document.getElementsByClassName('dpBtn')[1].click();");
ffdri.findElement(By.id("BusType_AC")).click();
ffdri.findElement(By.id("BusType_Sleeper")).click();
js.executeScript("document.getElementsByClassName('dpBtn')[1].click();");
ffdri.findElement(By.linkText("Fare")).click();
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//button[#class='viewSeatsBtn']"))).click();
// System.out.println(val.getText());
//js.executeScript("document.getElementsByClassName('viewSeatsBtn')[0].click();");
// WebElement ViewSeats = ffdri.findElement(By.xpath("//button[#class='viewSeatsBtn']"));
//js.executeScript("arguments[0].click();", ViewSeats);

Using JavascriptExecutor to sendKeys plus click on web element

I'm trying to open a link in a new tab, then switch to that tab, in a Firefox browser, using selenium in Java. It's my understanding that in order to do this, I need to use a send keys combination.
In order to open the link in the same window, I've been using something like this:
WebElement we = driver.findElement(By.xpath("//*[#id='btn']"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", we);
The above was working fine for me.
Now I'm trying to also sendKeys, as in below, which is not working:
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("keyDown(Keys.CONTROL)
.keyDown(Keys.SHIFT)
.click(arguments[0])
.keyUp(Keys.CONTROL)
.keyUp(Keys.SHIFT);", we);
Any advice? I can't figure out the correct syntax to sendKeys to JavascriptExecutor. I've seen some similar solutions using Actions, but this hasn't worked for me either.
try below code to open any link on page to new tab & switch to that tab. Perform operations there & go back to first tab for further execution.
WebDriver driver = new FirefoxDriver();
driver.get("http://stackoverflow.com/");
WebElement e = driver.findElement(By.xpath(".//*[#id='nav-questions']"));
Actions action = new Actions(driver);
action.keyDown(Keys.CONTROL).build().perform(); //press control key
e.click();
Thread.sleep(10000); // wait till your page loads in new tab
action.keyUp(Keys.CONTROL).build().perform(); //release control key
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "\t"); //move to new tab
driver.navigate().refresh(); // refresh page
driver.findElement(By.xpath(".//*[#id='hlogo']/a")).click(); //perform any action in new tab. I am just clicking logo
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "\t"); //switch to first tab
driver.navigate().refresh();
driver.findElement(By.xpath(".//*[#id='hlogo']/a")).click();// refresh first tab & continue with your further work.I am just clicking logo

Selenium webdriver doesn't click on save button in chrome and firefox

My project is in mvc and I want to test it using selenium web driver.
Some button clicks work properly. But when I navigate to different page saying continue on that page Save button doesn't work.
Below is my code
driver.FindElement(By.Id("BtnAddNew")).Click();
IWebElement cat = driver.FindElement(By.Id("Cat"));
cat.SendKeys("Single-family house");
IWebElement ext_id = driver.FindElement(By.Id("ExternalId"));
ext_id.SendKeys("SAR_47");
IWebElement zip = driver.FindElement(By.Id("AddressZipTown"));
zip.SendKeys("1205 Genève");
IWebElement street = driver.FindElement(By.Id("AddressStreet"));
street.SendKeys("Tramstrasse 10");
driver.FindElement(By.Id("btnContinue")).Click();
driver.FindElement(By.Id("btnSave")).Click();
driver.Quit();
Can anyone solve my problem?
You can solve this problem by checking the DOM for a certain amount of time to try to find your WebElement. You can use Implicit or Explicit Waits.
Doc:
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits

close the window popup using JS

Writng script for closing window which i get as a pop up in any website for example
if u launch www.myntra.com it gives a window like if u have facebook acount login.. am trying to close this facebook window
HTML code:
<div class="close"></div>
frist i have tried normal webdriver script
driver.findElement(By.xpath("//div[#class='close']").click;
above code gives me exception like "element is not visible you may want to interact with"
i have tried using javaexecutor somthing like below'
WebElement element = driver.findElement(By.xpath("//div[#class='close']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
above JS code doesnot give me exception but`enter code here` even it doesnot close the window for which i have written the code.
1)why in above webdriver code i get exception like "element is not visible you may want to interact with"? what is reason behind this.
2) what is the way to close the window?
i have spent whole day but dint got solution please help me out thanks in advance
You can close the browser window with Selenium, without Javascript.
// get the current windowHandle before triggering the popup (if loading myntra triggers the popup, just navigate to localhost and get the windowHandle there, before navigating to myntra)
String window1 = driver.getWindowHandle();
// trigger the popup
driver.get("www.myntra.com");
// get all window handles
String[] handles = driver.getWindowHandles().toArray(new String[2]);
// switch focus to the popup window
driver.switchTo().window(handles[handles.length - 1]);
// close the popup
driver.close();
// switch focus back to the original window
driver.switchTo().window(window1);
// continue test...

Categories