1. 程式人生 > >selenium設定:瀏覽器不顯示圖片

selenium設定:瀏覽器不顯示圖片

想解決的問題:
跑selenium指令碼時,會執行瀏覽器,瀏覽器會顯示圖片,而出於效率或者其他方面的考慮,我們並不希望顯示圖片。那這裡怎麼做呢?本文會向大家介紹方法,並且觸類旁通,通過本文的辦法,你會知道,怎麼自定義瀏覽器的其他屬性。 一、chrome driver是否設定瀏覽器屬性 chrome driver是否支援對瀏覽器屬性的定義?答案當然是YES
注意到紅框中的部分,這裡說明,我們可以去定義chrome瀏覽器的原生屬性,這些屬性是儲存在chrome的使用者資料資料夾中的Preferences檔案中的,只要是這個檔案中定義的屬性,我們都可以讓chrome driver對其做重新設定。我們初步判斷,“不載入圖片“這一設定,是儲存在這個檔案中的,因此,接下來需要知道,在這個檔案中,是怎麼儲存”不載入圖片“這個屬性的。 二、“不載入圖片”對應preferences檔案中哪個屬性
1、找到Preferences Preferences檔案,一般位於使用者資料夾\AppData\Local\Google\Chrome\User Data\Default,如下圖所示
2、通過瀏覽器設定”不顯示圖片“ 開啟你的chrome瀏覽器,進入“設定”頁面,選“顯示高階設定”
3、對比設定前後Preferences的區別 做了這個修改後,會發現Preferences多了紅框這幾行,因此這幾行配置,對應了“不顯示圖片”這個配置
三、初始化chrome driver(程式碼) 通過前面兩個步驟,我們已經知道了,chrome是怎麼在Preferences中儲存配置的,下面就是將這個配置變成程式碼:在初始化WebDriver時,帶上這個配置。 程式碼如下所示。要注意到,map中的值,是要和Preferences中的層級相對應的。 1、default_content_setting是在profile配置組中的,因此表示式是profile.default_content_settings 2、default_content_settings中imges是key值,2是value值
Map<String, Object> contentSettings = new HashMap<String, Object>();
contentSettings.put("images", 2);

Map<String, Object> preferences = new HashMap<String, Object>();
preferences.put("profile.default_content_settings", contentSettings);

DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability("chrome.prefs", preferences);
WebDriver driver = new ChromeDriver(caps);
總結:本文雖然是介紹了“不顯示圖片”的方法,但chrome的其他屬性,也可以通過同樣的思路去設定。怎麼樣~!讓我們更加靈活、自由地使用selenium把! 不同版本的chrome driver,使用上可能存在差異,這裡提供我使用的chrome driver: http://pan.baidu.com/share/link?shareid=2940223438&uk=1375814196