0

I'm trying to move to a different page (click 'my account'), and a floating advertisement appears: advertisement

I tried to click on it, and can't find the "Close" element. Found that it might related to frames, but still not works.

My Code:

public void clickMyAccount() {
    driver.findElement(myAccountBtn).click();
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));

    try {
        Thread.sleep(5);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

public void clickCloseAd(){
    driver.switchTo().frame(driver.findElement(By.id("google_esf")));
    driver.switchTo().frame(driver.findElement(By.id("aswift_9")));
    driver.switchTo().frame(driver.findElement(By.id("ad_iframe")));
    driver.findElement(By.id("dismiss-button")).click();
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
    driver.switchTo().defaultContent();
}

Site: https://practice.automationtesting.in/

Any idea how can I click the floating advertisement?

Tried: move between frames until able to find the Close element Actual: still can't find this element

double-beep
  • 5,031
  • 17
  • 33
  • 41
Guy
  • 11
  • 5

2 Answers2

0

It is hard to handle advertisement popUp. So we can handle it in 2 ways:

  1. downloading ad-blocker extension to your chrome and using the chrome option code.
  1. Notice that popUp gets disabled is do back. so we can is click on myaccount go back and then click back:

         WebElement MyAccount = driver.findElement(By.xpath("//[@href='https://practice.automationtesting.in/my-account/']"));
     MyAccount.click();
     driver.navigate().back();
     MyAccount.click();
    
  • Thanks Fouzan Jafri, these two options seem that skip the advertisement, But I am still trying to search for a way to handle this popUp, I can't understand what is wrong in my code, I'm switching to each frame of the advertisement and I can't click the "dismiss-button" – Guy Jan 04 '23 at 17:25
0

Found the issue:

  1. My 'wait' not always working, so the driver tries to close the ad when not displayed - still searching for a way to correct this
  2. It's working without frame1: "google_esf", only frame2 and frame3 needed

Updated code:

        public void clickMyAccount() {
        System.out.println("Click My Account");

        if(driver.findElement(myAccountBtn).isDisplayed()){
            driver.findElement(myAccountBtn).click();
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
            driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
        } else {
            System.out.println("My account button not displayed");
        }

    }

    public void clickCloseAd(){
        System.out.println("Click Close Ad");


            if(driver.findElement(By.id("aswift_9")).isDisplayed()){
//                driver.switchTo().frame(driver.findElement(By.id("google_esf"))); //Not in use but also a frame
                driver.switchTo().frame(driver.findElement(By.id("aswift_9")));
                driver.switchTo().frame(driver.findElement(By.id("ad_iframe")));
                driver.findElement(By.id("dismiss-button")).click();

                driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
                driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
                driver.switchTo().defaultContent();
            } else {
                System.out.println("Ad not displayed");
            }
    }

Thanks all!

Guy
  • 11
  • 5