Handle/Accept cookie pop-up in Selenium

Tags: , ,



I am trying to ‘accept the cookies’ on the homepage, but my code doesn’t work. I tried to get the new window handles and then identify the subsequent Xpath for the frame and Accept button but it never work.

package seleniumTestPack;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.Cookie;


@SuppressWarnings("unused")
public class firstSelTest {
    public static void main(String[] args) throws InterruptedException {
        ChromeOptions options = new ChromeOptions();

        //Add chrome switch to disable notification - "**--disable-notifications**"
        options.addArguments("--disable-notifications");
        
        System.setProperty("webdriver.chrome.driver", "C:\Users\vmyna\Downloads\chromedriver_win32\chromedriver.exe");
        WebDriver driver = new ChromeDriver(options);
        
        driver.get("https://www.zyyah.com/homeowner-lifestyle-perfected-home-value-protected/");
        
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

        driver.switchTo().frame(0);
        driver.getWindowHandles();
        
        driver.switchTo().alert().accept();
        By cookies_accept = By.xpath("//*[@id="cookie-law-info-bar"]");
        By cookies_gotIt = By.xpath("//*[@id="cookie_action_close_header"]");
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.elementToBeClickable(cookies_accept)).click();
        wait.until(ExpectedConditions.invisibilityOfElementLocated(cookies_accept));
        wait.until(ExpectedConditions.elementToBeClickable(cookies_gotIt)).click();

        driver.findElement(By.xpath("//*[@id='et-boc']/div/div/div[4]/div/div/div[2]/div[1]")).click();
 
        Thread.sleep(10000);
        driver.quit();
        
    }
 }

Answer

You no need to switch frame in your case, because there is no frame present in your page. Just inspect the “Accept Cookies” and click on that.

driver.get("https://www.zyyah.com/homeowner-lifestyle-perfected-home-value-protected/");
 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("cookie_action_close_header")).click();

Use of Switch to Frame:

https://www.browserstack.com/guide/handling-frames-in-selenium

Use of Alert:

https://www.browserstack.com/guide/alerts-and-popups-in-selenium



Source: stackoverflow