屏蔽有关 selenium 的广告

qlvxas9a  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(152)

我目前正在为我的一项关于质量保证自动化的学术任务使用 selenium 。为此,我使用了一个我或我认识的人都不能处理的网站。
我注意到,当我运行测试用例时,有时会在打开的Chrome窗口中的网站上出现广告。因为它不是弹出窗口,所以使用disable-popup-blocking不起作用。此外,由于广告并不总是出现,因此使用代码段关闭广告模式也不起作用。
下图描述了一个场景示例。

是否有解决此问题的解决方法?提前谢谢您!

@Test
@Order(2)
public void CovertLang() throws InterruptedException {
    // Navigating to 123apps.com website
    driver.get("https://123apps.com/");

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

    // Accessing the language modal
    WebElement langButton = driver.findElement(By.id("language-link"));
    langButton.click();

    // Wait until the modal opens
    wait.until(ExpectedConditions
            .visibilityOfElementLocated(By.className("modal-title")));

    // Selecting German as the language
    WebElement deutschButton = driver.findElement(By.xpath("//a[@href='/de/']"));
    deutschButton.click();

    Thread.sleep(1000);

    // Comparing the web URL
    String newURL = driver.getCurrentUrl();
    assertEquals("https://123apps.com/de/", newURL);
}

上面显示了我进行的一个测试的一个例子。

c0vxltue

c0vxltue1#

您可以使用以下js代码禁用该广告:

// Selecting German as the language
WebElement deutschButton = driver.findElement(By.xpath("//a[@href='/de/']"));
deutschButton.click();

Thread.sleep(1000);

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("const elements = document.getElementsByClassName('adsbygoogle adsbygoogle-noablate'); while (elements.length > 0) elements[0].remove()");

deutschButton.click();

// Comparing the web URL
String newURL = driver.getCurrentUrl();
assertEquals("https://123apps.com/de/", newURL);

相关问题