2014-11-24 40 views
7

following code禁用造型禁用加載火狐硒webdriver的頁面上的樣式表和圖像:在谷歌搜索與硒FirefoxDriver

from selenium import webdriver 

firefox_profile = webdriver.FirefoxProfile() 
firefox_profile.set_preference('permissions.default.stylesheet', 2) 
firefox_profile.set_preference('permissions.default.image', 2) 

driver = webdriver.Firefox(firefox_profile) 
driver.get('http://www.stackoverflow.com/') 

driver.close() 

它正常工作與stackoverflow.comfacebook.comyahoo.com ...但有趣的是不適用於Google搜索;只有Google徽標消失,其樣式表仍然保留。

如果您使用以下鏈接http://google.com/search?q=nelson+mandela嘗試,你會得到:

enter image description here

鑑於預期的結果應該是這樣的(無樣式表+無圖片):

enter image description here

  • 這是怎麼回事?
  • 我該如何解決?
+0

我可以重現這個問題。非常有趣的問題。 – 2014-11-24 17:22:37

回答

3

谷歌標誌來自css,圖片嵌入在HTML中作爲數據(img src =「data:image/jpeg; base64,....)」代碼禁止加載遠程圖像不是此類型的源

  • permissions.default.stylesheet:禁用任何格式

  • permissions.default.image:禁用任何圖像和css背景圖像

如果圖像嵌入到頁面編碼是不會被這些權限,因爲是HTML代碼 的一部分的base64(見http://en.wikipedia.org/wiki/Data_URI_scheme

禁用更多的格式,你應該加上:

  • firefox_profile .set_preference(「permissions.default.script」,2);
  • firefox_profile.set_preference(「javascript.enabled」,False);
+0

我不明白。你可以啓發你的解釋嗎? – 2014-11-27 15:07:02

+0

我更新了我的答案,不知道是否是正確的方式,或者我必須添加註釋 – sax 2014-11-27 19:23:11

+0

您說徽標消失了,因爲它是已禁用的CSS的一部分。那麼,爲什麼我們仍然可以看到整個頁面佈局和格式? – 2014-11-28 09:49:32

2

貫穿硒腳本執行

var queries = ['link[rel=stylesheet][href]', 'style']; 
for (var i = 0; i < queries.length; i++) { 
    var remove = document.querySelectorAll(queries[i]); 
    for (var j = 0; j < remove.length; j++) { 
     remove[j].outerHTML = ''; 
    } 
} 
var inline = document.querySelectorAll('*[style]'); 
for (var i = 0; i < inline.length; i++) { 
    inline[i].removeAttribute('style'); 
} 

我與谷歌測試這個下面的JavaScript,它的工作原理。從這裏得到了上述腳本firefox extension代碼

driver = webdriver.Firefox(firefox_profile) 
driver.get('http://www.google.com/') 
driver.execute_script("<put the above javascript here as string>") 
+0

正如我看到你得到了賞金,我認爲這個代碼工作!我很感激。但我沒有太多硒的經驗,這是我沒有找到任何方式來使用此代碼。你能否告訴我如何使用「硒腳本執行者」或放置腳本的位置? @deepak – 2014-12-08 15:09:43

+0

@nazmussaif:已經更新了答案。希望有所幫助。 – deepak 2014-12-08 17:50:03