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);
}