Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除Selenium webdriver中的所有广告_Java_Selenium_Ads - Fatal编程技术网

Java 删除Selenium webdriver中的所有广告

Java 删除Selenium webdriver中的所有广告,java,selenium,ads,Java,Selenium,Ads,我想一个接一个地关闭网页上出现的所有广告。广告可以出现在不同的地方,两个或一排。 我曾尝试编写driver.findelement(By.xpath(“//div[@id='cbb']”)。单击(),但问题是所有广告都有相同的关闭按钮代码。 还有别的办法吗 选项#1 我建议使用。基本上可以添加style='visibility:hidden;'到HTML块(在您的例子中是广告的HTML): 要隐藏多个元素,需要使用JS函数,该函数将隐藏元素,然后将其作为字符串传递给executeScript()

我想一个接一个地关闭网页上出现的所有广告。广告可以出现在不同的地方,两个或一排。 我曾尝试编写
driver.findelement(By.xpath(“//div[@id='cbb']”)。单击()
,但问题是所有广告都有相同的关闭按钮代码。 还有别的办法吗

选项#1

我建议使用。基本上可以添加
style='visibility:hidden;'到HTML块(在您的例子中是广告的HTML):

要隐藏多个元素,需要使用JS函数,该函数将隐藏元素,然后将其作为字符串传递给
executeScript()

注意,在试图隐藏广告之前,请确保添加必要的超时,以等待页面上加载所有广告

选项#2-如果您的页面上没有jQuery,则有点硬核

  • 如果您没有jQuery,您可以将它添加到DOM中(这需要添加一些Java代码),然后使用它的方法隐藏我上面发布的Java代码中的元素

  • 如果您的页面上加载了jQuery,只需搜索jQuery代码以隐藏页面上的HTML(替代上面发布的vanilla JS),然后将这些代码添加到Java函数中


你想做什么?您是否使用Selenium进行网页抓取?你能在浏览器中安装adblock吗?我已经在我的普通Chrome上安装了adblock。在打开的新页面中,不会出现我的任何扩展。如果我有adblocker我不会问
public void hideElement(String xpath)
{
    WebElement element = driver.findElement(By.xpath(xpath));       
    ((JavascriptExecutor)driver).executeScript("arguments[0].style.visibility='hidden'", element);
}
public void hideElements()
{

String jscode = "var elements = document.getElementsByClassName('className');
    for (var i = 0; i < elements.length; i++){
        elements[i].style.display = 'none';
    };";   

// escaping single / double quotes / tabs / line breaks / so on
jscode =  escapeJS(jscode);   

    ((JavascriptExecutor)driver).executeScript(jscode);
}
/**
 * Escapes JS.
 */
public static String escapeJS(String value) {
    return StringEscapeUtils.escapeEcmaScript(value);
}