2014-11-24 13 views
7

Các following code vô hiệu hóa stylesheets và hình ảnh trên một trang nạp với Selenium Firefox webdriver:Disable phong cách trên Google Search với Selenium 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() 

Nó hoạt động tốt với stackoverflow.com, facebook.com, yahoo.com ... nhưng thú vị không phải với Google Tìm kiếm; chỉ biểu trưng của Google biến mất và biểu định kiểu của nó vẫn được giữ nguyên.

Nếu bạn thử với liên kết sau http://google.com/search?q=nelson+mandela, bạn sẽ nhận được:

enter image description here

Trong khi kết quả dự kiến ​​sẽ giống như thế này (không stylesheet + không có hình ảnh):

enter image description here

  • Điều gì đang xảy ra?
  • Làm cách nào để khắc phục sự cố?
+0

Tôi có thể tạo lại sự cố. Câu hỏi rất thú vị. –

Trả lời

3

Biểu trưng của Google có dạng css, nơi các hình ảnh được nhúng trong HTML dưới dạng dữ liệu (img src = "data: image/jpeg; base64, ....) mã vô hiệu hóa tải hình ảnh từ xa không loại nguồn

  • permissions.default.stylesheet: vô hiệu hóa bất kỳ định dạng

  • permissions.default.image: vô hiệu hóa bất kỳ hình ảnh và css background-image

nếu hình ảnh được nhúng vào các trang như là mã hóa base64 không bị chặn bởi các điều khoản vì là một phần của HTML code (xem http://en.wikipedia.org/wiki/Data_URI_scheme)

để vô hiệu hóa nhiều định dạng bạn nên thêm:

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

Tôi không hiểu. Bạn có thể khai sáng lời giải thích của mình không? –

+0

Tôi đã cập nhật câu trả lời của mình, không chắc chắn liệu đó có đúng hay tôi phải thêm nhận xét – sax

+0

Bạn cho biết biểu trưng đã biến mất vì đó là một phần của CSS đã bị tắt. Sau đó, tại sao chúng ta vẫn có thể xem toàn bộ bố cục và định dạng trang? –

2

chạy javascript sau thông qua việc thi hành di chúc selen kịch bản

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'); 
} 

Tôi đã thử nghiệm này với google, nó hoạt động. đã nhận tập lệnh ở trên từ mã này firefox extension

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

Như tôi thấy bạn có tiền thưởng, tôi nghĩ rằng mã này đang hoạt động! Tôi trân trọng điều đó. Nhưng tôi không có nhiều kinh nghiệm về selen, tôi không tìm cách sử dụng mã này. Bạn sẽ khai sáng cho tôi bằng cách sử dụng "người thực thi kịch bản selenium" hay nơi để đặt kịch bản? @deepak –

+0

@nazmussaif: đã cập nhật câu trả lời. hy vọng rằng sẽ giúp. – deepak

Các vấn đề liên quan