如何使用Selenium(Java)在浏览器中禁用JavaScript?

在我的function自动化中,我需要在浏览器中禁用JavaScript并运行流程。 如何禁用JavaScript?

试过firefox和Chrome的DesiredCapabilities。

DesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, false) 

 DesiredCapabilities dc = new DesiredCapabilities(); dc.setJavascriptEnabled(false); 

对于firefox,尝试过1)为firefox设置配置文件

2)添加附加组件 – noScript.xpi

3)profile.setPreference(“javascript.enabled”,false);

4)通过UI,尝试将标志 – “about:config”中的“javascript.enabled”更改为false。 在这里,打开firefox并给出“about:config”警告 – “这可能会使您的保修失效!”。 有一个按钮 – “我会小心的,我保证!” id – warningButton。 应单击此按钮以继续。 要单击此按钮,请使用driver.findElement(By.id(“warningButton”))。click(); 但它不起作用。

以上所有选项均无效。 任何建议都会有所帮助。

您可以使用包含许多选项的配置文件更改首选项值:

 DesiredCapabilities capabilities = new DesiredCapabilities(); // setCapability(SUPPORTS_JAVASCRIPT, javascriptEnabled); capabilities.setJavascriptEnabled(false); FirefoxBinary binary = new FirefoxBinary( new File( binaryPath ) ); FirefoxProfile profile = new FirefoxProfile(); //profile.setPreference("preferenceName", "Value"); profile.setPreference("javascript.enabled", false); RemoteWebDriver driver = new FirefoxDriver(binary, profile, capabilities); 

要查看首选项,您可以访问以下URL about:config

在此处输入图像描述

@看到

  • Chrome驱动程序可禁用JavaScript问题
  • 铬的命令行开关

根据Selenium 3.6 Java Client Release ,在浏览器中禁用Javascript的最简单方法是将DesiredCapabilitiessetJavascriptEnabled参数设置为False ,并将其与FirefoxOptions合并,如下所示:

 package demo; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.DesiredCapabilities; public class Q46883024_setJavascriptEnabled { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); DesiredCapabilities dc = new DesiredCapabilities(); dc.setJavascriptEnabled(false); FirefoxOptions op = new FirefoxOptions(); op.merge(dc); WebDriver driver = new FirefoxDriver(op); driver.get("https://google.com"); driver.quit(); } } 

执行时,您使用的浏览器可能会覆盖setJavascriptEnabled设置。