用于操作Chrome驱动程序的各种属性。Chrome Option类通常与Desired Capabilities(期望功能)一起使用。
例如: 下面的例子展示了一种使用ChromeOptions类 打开Chrome浏览器并且最大化窗口的方法。我们需要将ChromeOptions类的实例传递给Web驱动程序初始化。
ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);
下面是ChromeOptions类可用的和最常用的参数列表:
在本教程中,您将学习到: Chrome Option类是什么? Desired Capabilities类 Chrome选项广告扩展插件 ChromeOption无痕(隐身)浏览模式 ChromeOption的无头模式
Desired capabilities类用于修改Web驱动程序的多个属性。Desired capabilities类提供一组键值对key-value,用于更改web驱动程序的各个属性,如浏览器名称、浏览器平台等。Desired capabilities类最常用的方法是setCapability方法。Desired capabilities最常用于Selenium Grid,其中需要在不同的浏览器上执行相同的测试用例。
例如: 下面的示例展示了如何使用Desired capabilities类使得chrome浏览器默认接受网站上的SSL证书。
// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);
下面是最常用的预定义功能类型(pre-defined capability):
Chrome选项广告扩展插件
Chrome浏览器的Adblocker扩展可以使用ChromeOption和DesiredCapabilities类来处理。下面是使用DesiredCapabilities类访问Chrome浏览器上的AdBlocker扩展的步骤:
Step 1) 在使用ChromeOption类之前,必须在Chrome浏览器上安装AdBlocker扩展
Step 2) 提取与AdBlocker扩展名对应的CRX文件 http://crxextractor.com/
Step 3) 将下载的CRX文件路径传到Chrome Options类
Step 4) 使用DesiredCapabilities类和Chrome Options对象实例化Web驱动程序
例如: 下面的示例演示如何使用ChromeOption和DesiredCapabilities类在Chrome浏览器上激活广告拦截器扩展:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
Extract CRX File:
下面的步骤演示了通过Web站点- http://crxextractor.com/通过广告拦截器提取CRX文件的过程
Step 1) 转到http://crxextractor.com/并单击start按钮
点击开始加载 Step 2) 在文本框下输入chrome扩展-广告拦截器URL–Ad Blocker URL under the textbox. https://chrome.google.com/webstore/detail/adblock-plus-free-ad-bloc/cfhdojbkjhnklbpkdaibdccddilifddb 或者 https://chrome.google.com/webstore/detail/adblock/gighmmpiobklfepjocnamgkkbiglidom 点击OK按钮
Step 3) 单击OK按钮,按钮的标签将更改为.CRX,如下所示: 点击GET .CRX按钮,将下载扩展名对应的CRX文件
GET 。CRX 下载的.CRX文件如下:
插件下载到本地
Step 4) 将文件保存到本地机器上,记录保存的路径。下一步是将保存的路径传递到ChromeOptions类
注意: 若不能访问Chrome官网,可到这里去下载已经生成好的CRX 文件,两个版本 AdBlock_Chrome广告拦截器extension_3_54_0_0.crx Adblock Plus - free ad blocker_extension_3_6_3_0.crx
示例代码:
广告
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AdblockDemo {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("X://extension_3_40_1_0.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
options.merge(capabilities);
ChromeDriver driver = new ChromeDriver(options);
driver.get("http://demo.guru99.com/test/simple_context_menu.html");
driver.manage().window().maximize();
//driver.quit();
}
}
上述代码解读:
注意: 我们是通过自动化脚本在Chrome浏览器上启用AdBlocker扩展,而不是手动在Chrome浏览器上启用AdBlocker扩展。CRX文件是一种使用自动化脚本访问广告拦截器扩展的方法。
输出结果: Chrome浏览器将启用AdBlocker扩展,如下所示,没有任何广告:
将没有广告
Chrome选项可以使用预先定义的参数-incognito无痕浏览。
下面是完成同样任务的示例代码:
示例代码:
package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Incognito{
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
options.merge(capabilities);
ChromeDriver driver = new ChromeDriver(options);
driver.get("http://demo.guru99.com/test/simple_context_menu.html");
driver.manage().window().maximize();
//driver.quit();
}
}
代码解读:
输出结果: Chrome浏览器窗口将以隐身模式打开,如下图所示:
隐身模式(无痕)
无头浏览器将在后台运行,你将不会看到浏览器GUI或在界面上的操作。
在无头模式下运行Chrome浏览器的Chrome选项可以通过使用预定义的参数-headless来实现。 下面将介绍完成此任务的示例代码: 例如:
package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
public class HeadlessModeDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
options.merge(capabilities);
ChromeDriver driver = new ChromeDriver(options);
driver.get("http://demo.guru99.com/");
driver.manage().window().maximize();
String title = driver.getTitle();
System.out.println("Page Title: " +title);
driver.quit();
}
}
代码解读:
输出结果: 浏览器将不可见的上述代码,因为Chrome将在无头模式下工作;页面标题将被获取并显示如下图:
打印标题
总结: