ChromeOption類是什麼?
用於操做Chrome驅動程序的各類屬性。Chrome Option類一般與Desired Capabilities(指望功能)一塊兒使用。html
例如:
下面的例子展現了一種使用ChromeOptions類 打開Chrome瀏覽器而且最大化窗口的方法。咱們須要將ChromeOptions類的實例傳遞給Web驅動程序初始化。java
ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);
下面是ChromeOptions類可用的和最經常使用的參數列表:web
start-maximized: 最大化模式打開chrome
Chrome incognito: 無痕瀏覽打開瀏覽器瀏覽器
headless: 無頭模式(後臺運行)微信
disable-extensions: 禁用Chrome瀏覽器上現有的擴展app
disable-popup-blocking: 禁用彈窗less
make-default-browser: 設置Chrome爲默認瀏覽器dom
version: 打印chrome瀏覽器版本編輯器
disable-infobars: 防止Chrome顯示「Chrome正在被自動化軟件控制」的通知
在本教程中,您將學習到:
Chrome Option類是什麼?
Desired Capabilities類
Chrome選項廣告擴展插件
ChromeOption無痕(隱身)瀏覽模式
ChromeOption的無頭模式
Desired Capabilities類
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文件
下載的.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
示例代碼:
您將在http://demo.guru99.com/看到以下廣告:
在Chrome瀏覽器上啓用AdBlocker擴展後,廣告將被禁用。
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();
}
}
上述代碼解讀:
首先,您須要使用set屬性方法設置chromedriver.exe文件的路徑,由於您正在使用Chrome瀏覽器進行測試;
您須要設置CRX文件的路徑來添加extensions方法;
而後須要建立DesiredCapabilities類的對象並將其傳遞給web驅動程序實例。從Selenium 3.8.1版本開始,驅動程序Capabilities類是不被推薦的,在將相同的參數傳遞給ChromeDriver構造函數以前,您須要將Capabilities對象與ChromeOption對象合併;
打開URL - http://demo.guru99.com/test/simple_context_menu.html,啓用廣告攔截器擴展;
最大化並關閉瀏覽器。
注意:
咱們是經過自動化腳本在Chrome瀏覽器上啓用AdBlocker擴展,而不是手動在Chrome瀏覽器上啓用AdBlocker擴展。CRX文件是一種使用自動化腳本訪問廣告攔截器擴展的方法。
輸出結果:
Chrome瀏覽器將啓用AdBlocker擴展,以下所示,沒有任何廣告:
ChromeOption無痕(隱身)瀏覽模式
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();
}
}
代碼解讀:
首先,您須要使用set屬性方法設置chromedriver.exe文件的路徑,由於您正在使用Chrome瀏覽器進行測試;
而後您須要建立一個ChromeOptions類的對象並將其傳遞給Web驅動程序實例。由於咱們想在incognito模式下打開Chrome瀏覽器,因此須要把參數-incognito傳遞給ChromeOptions類;
接下來,建立DesiredCapabilities 類的對象,並使用merge方法將DesiredCapabilities 類對象與ChromeOptions類對象合併;
須要建立一個ChromeDriver類的對象,並將ChromeOptions對象做爲參數傳遞;
最後,咱們須要傳遞URL -http://demo.guru99.com/test/simple_context_menu.html到driver.get方法;
最大化並關閉瀏覽器
輸出結果:
Chrome瀏覽器窗口將以隱身模式打開,以下圖所示:
ChromeOption的無頭模式
無頭瀏覽器將在後臺運行,你將不會看到瀏覽器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();
}
}
代碼解讀:
首先,您須要使用set屬性方法設置chromedriver.exe文件的路徑,由於您正在使用Chrome瀏覽器進行測試;
接下來,建立一個ChromeOptions類的對象並將其傳遞給Web驅動程序實例。因爲咱們想在headless模式下打開Chrome瀏覽器,咱們須要將參數-headless傳遞給ChromeOptions類;
接下來,建立DesiredCapabilities 類的對象,並使用merge方法將DesiredCapabilities 類對象與ChromeOptions類對象合併;
須要建立一個ChromeDriver類的對象,並將ChromeOptions對象做爲參數傳遞;
最後,咱們須要傳遞URL -http://demo.guru99.com/到driver.get方法;
打印頁面標題並關閉瀏覽器。
輸出結果:
瀏覽器將不可見的上述代碼,由於Chrome將在無頭模式下工做;頁面標題將被獲取並顯示以下圖:
總結:
ChromeOption類用於操做ChromeDriver的各類屬性;
DesiredCapabilities類提供一組鍵值對,用於修改Web Driver的各個屬性,如瀏覽器名稱、瀏覽器平臺等;
要操做Chrome瀏覽器的任何擴展插件,必須提取與擴展名對應的CRX文件,並將其添加到ChromeOptions類中;
--incognito和--headless是ChromeOptions類爲在incognito模式和headless模式下使用Chrome瀏覽器提供的預約義參數。
文章來源:https://www.guru99.com/selenium-tutorial.html
萬水千山老是情,點個「在看」 行不行!!!
本文分享自微信公衆號 - 軟測小生(ruancexiaosheng)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。