Handle Ads Google using Selenium

Anh Tester chia sẻ cho các bạn cách xử lý Ads của Google với Selenium

Anh Tester sử dụng code Selenium với Java. Các bạn dùng ngôn ngữ khác chỉnh lại cho phù hợp nhen.

Account An dùng làm demo là có 20 ngày thôi. Có gì các bạn lên trang Guru tạo nhen. Dễ lắm. Hoặc kiếm trang website nào khác test cho trực quan.

@Test
public void testCloseAdsGoogle() {
    try {
        driver.get("https://demo.guru99.com/V4/");
        Thread.sleep(2000);
        driver.findElement(By.name("uid")).sendKeys("mngr484782");
        driver.findElement(By.name("password")).sendKeys("nEzarEs");
        driver.findElement(By.name("btnLogin")).click();
        Thread.sleep(2000);
        driver.findElement(By.linkText("New Customer")).click();
        Thread.sleep(2000);

        //Get element in frame by ID
        WebElement frame1 = driver.findElement(By.id("google_ads_iframe_/24132379/INTERSTITIAL_DemoGuru99_0"));
        //Switch to frame with element
        driver.switchTo().frame(frame1);
        //Check button X or Close displays
        List < WebElement > checkButtonX = driver.findElements(By.xpath("//div[@id='dismiss-button']"));
        System.out.println("checkButtonX: " + checkButtonX.size());
        if (checkButtonX.size() > 0) {
            driver.findElement(By.xpath("//div[@id='dismiss-button']")).click();
        } else {
            WebElement frame2 = driver.findElement(By.id("ad_iframe"));
            driver.switchTo().frame(frame2);
            Thread.sleep(1000);
            List < WebElement > checkButtonClose = driver.findElements(By.xpath("//div[@id='dismiss-button']//span[normalize-space()='Close']"));
            System.out.println("checkButtonClose: " + checkButtonClose.size());
            if (checkButtonClose.size() > 0) {
                driver.findElement(By.xpath("//div[@id='dismiss-button']//span[normalize-space()='Close']")).click();
            } else {
                driver.findElement(By.xpath("//div[@id='dismiss-button']")).click();
            }
        }

        driver.switchTo().defaultContent();
        Thread.sleep(2000);
    } catch (Exception e) {
        e.printStackTrace();
    }
}​


Handle Ads Google using Selenium | Anh Tester


Cách tắt Ads của Google với Selenium


- Bước 1: kiểm tra lấy cái ID của thẻ iframe chứa Ads. Mỗi một Ads trên website đều có ID và ID này không đổi khi chạy lại nên các bạn an tâm.

Handle Ads Google using Selenium | Anh Tester

- Bước 2: Chuyển hướng vào cái iframe đó

//Get element in frame by ID
WebElement frame1 = driver.findElement(By.id("google_ads_iframe_/24132379/INTERSTITIAL_DemoGuru99_0"));
//Switch to frame with element
driver.switchTo().frame(frame1);

- Bước 3: Bắt hết các element cần thiết. Tại đây toàn ID dễ lấy vô cùng nên chắc An không cần chỉ rồi 😄

Handle Ads Google using Selenium | Anh Tester

- Bước 4: Muốn tắt cái Ads đó thì bạn nhấn button X hoặc button Close.

Yeah trên hình là chỉ có button X. Nhưng khi các bạn vào lại lúc khác thì nó lại hiện theo kiểu button Close chính vì thế mình phải đặt điều kiện để kiểm tra từng trường hợp rồi click button cho phù hợp kẻo lỗi do không tìm thấy element.

Code bên trên có note nên các bạn nhìn chắc hiểu rồi 😁


Source code on GitHub:
https://github.com/anhtester/NewFeatureSelenium4/blob/main/src/test/java/CloseAdsGoogle.java

  • Anh Tester

    Đường dẫu khó chân vẫn cần bước đi
    Đời dẫu khổ tâm vẫn cần nghĩ thấu