删除 Selenium webdriver 中的所有广告
Delete all the ads in Selenium webdriver
我想将网页中出现的所有广告一一关闭。广告可以出现在不同的地方,两个或一个排成一排。
我曾尝试编写 driver.findelement(By.xpath("//div[@id='cbb']")).click()
,但问题是所有广告的关闭按钮代码都相同。
还有其他方法吗?
选项 #1
我建议使用 JavascriptExecutor。您基本上可以将 style='visibility: hidden;'
添加到 HTML 块(在您的情况下是广告的 HTML):
public void hideElement(String xpath)
{
WebElement element = driver.findElement(By.xpath(xpath));
((JavascriptExecutor)driver).executeScript("arguments[0].style.visibility='hidden'", element);
}
为了隐藏多个元素,你需要想出 JS 函数,它会隐藏元素,然后将它 作为字符串 传递给 executeScript()
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);
}
辅助函数(需要此导入:org.apache.commons.lang3.StringEscapeUtils;
- 您可以从 here 获取此库):
/**
* Escapes JS.
*/
public static String escapeJS(String value) {
return StringEscapeUtils.escapeEcmaScript(value);
}
注意,确保添加必要的超时以等待所有广告加载到页面上,然后再尝试隐藏它们
选项 #2 - 如果您的页面上没有 jQuery,则有点硬核
如果您没有 jQuery - 您可以将其添加到 DOM(这将需要添加一些 Java 代码)然后使用它在我上面发布的 Java 代码中隐藏元素的方法
如果您的页面上加载了 jQuery - 只需搜索 jQuery 代码以在页面上隐藏 HTML(替代我在上面发布的 vanilla JS ) 并将这些代码添加到 Java 函数。
我想将网页中出现的所有广告一一关闭。广告可以出现在不同的地方,两个或一个排成一排。
我曾尝试编写 driver.findelement(By.xpath("//div[@id='cbb']")).click()
,但问题是所有广告的关闭按钮代码都相同。
还有其他方法吗?
选项 #1
我建议使用 JavascriptExecutor。您基本上可以将 style='visibility: hidden;'
添加到 HTML 块(在您的情况下是广告的 HTML):
public void hideElement(String xpath)
{
WebElement element = driver.findElement(By.xpath(xpath));
((JavascriptExecutor)driver).executeScript("arguments[0].style.visibility='hidden'", element);
}
为了隐藏多个元素,你需要想出 JS 函数,它会隐藏元素,然后将它 作为字符串 传递给 executeScript()
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);
}
辅助函数(需要此导入:org.apache.commons.lang3.StringEscapeUtils;
- 您可以从 here 获取此库):
/**
* Escapes JS.
*/
public static String escapeJS(String value) {
return StringEscapeUtils.escapeEcmaScript(value);
}
注意,确保添加必要的超时以等待所有广告加载到页面上,然后再尝试隐藏它们
选项 #2 - 如果您的页面上没有 jQuery,则有点硬核
如果您没有 jQuery - 您可以将其添加到 DOM(这将需要添加一些 Java 代码)然后使用它在我上面发布的 Java 代码中隐藏元素的方法
如果您的页面上加载了 jQuery - 只需搜索 jQuery 代码以在页面上隐藏 HTML(替代我在上面发布的 vanilla JS ) 并将这些代码添加到 Java 函数。