2014-11-25 23 views
9

Bir ekran görüntüsünü PhantomJS ile Selenium'da web tarayıcı olarak aldığımda, tek alacağım şeffaf bir arka plan. Herhangi bir ipucu neden? Google.com gibi sayfalarla çalışır, ancak istediğim kahoot.it değil. Ayrıca Firefox'ta ihtiyaç duyduğum her şeyle çalışır, ancak PhantomJS'de değil.Selenyum [Python] içinde PhantomJS ile şeffaf ekran görüntüsü?

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

dcap = dict(DesiredCapabilities.PHANTOMJS) 
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36") 

Bu kod Herhangi bir yardım çok takdir

driver = webdriver.PhantomJS(desired_capabilities=dcap) 
time.sleep(12) 
driver.set_window_size(1024, 768) 
driver.get('http://www.kahoot.it') 

driver.save_screenshot('testing.png') 

olduğunu! :)

+3

Selenyum ve PhantomJS.but ile aşina olmayın, bu uygun görünmektedir. 'PhantomJS web sayfasının arka plan rengini ayarlamaz, arka plan rengine karar vermek için sayfaya bırakılır. Sayfa bir şey ayarlamazsa, o zaman şeffaf kalır. '[PhantomJS SSS] (http://phantomjs.org/faq.html) – Himal

+0

1.9.7 ve 1.9.8 ile windows veya linux üzerinde saydam bir arka plan oluşturamıyorum . –

+0

Vay, aslında haklıydın. Ben Yosemite üzerinde bir Mac kullanıyorum ve sadece test etmek için Windows 8 ile bir VM kurdum. Her şey kusursuz çalıştı; kodun geri kalanı da. Nedenini anlamayın, ama çok teşekkürler! :) –

cevap

6

Sorununuz siteniz hakkında.

http://www.kahoot.it olarak yazdınız ama sonuçta https sitesine yönlendiriyorsunuz. Yani, PhantomJS ssl sürümünden hatalar alıyorsa veya hataları varsa ssl kendisini alıyor. driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any', '--web-security=false']) ve tüm Tamam çalışmalıdır:

bu şekilde webdriver.PhantomJS() değiştirin.

Diğer taraftan, saydam arka plandan hoşlanmıyorsanız, driver.execute_script('document.body.style.background = "black"') ile kendi ayarlarınızı yapın.

İlk örnekte yalnızca sol çerçevenin karartıldığını görürsünüz, bunun nedeni en üstteki öğenin beyaz arka plana ayarlanmış olmasıdır. Kahoot örneğinde bunu ayarlayamazsınız çünkü bu web sayfasının kendi javascript autochange betiği vardır. Değiştirmeden önce onu çıkarmalısınız, aksi halde ayarınız kısa süre sonra veya daha sonra geçersiz kılınacaktır.

Tam kod, hazır çalıştırmak için:

#!/usr/bin/env python 
#! -*- coding: utf-8 -*- 

import os 
import selenium 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

dcap = dict(DesiredCapabilities.PHANTOMJS) 
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36") 


driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any', '--web-security=false']) 
driver.set_window_size(1024, 768) 
driver.get('http://www.httpbin.org') 
time.sleep(2) 
driver.execute_script('document.getElementsByClassName("mp")[0].style.background = "green"') 
#driver.execute_script('document.body.style.background = "black"') 
driver.save_screenshot('testing1.png') 

driver.get('http://www.kahoot.it') 
time.sleep(2) 
driver.execute_script("var body = document.getElementsByTagName('body')[0]; body.setAttribute('background-color', 'white')") 
driver.execute_script('document.body.style.background = "black"') 
driver.save_screenshot('testing2.png') 

diğer saydam sorunlar için öneri olarak istediğini DOM öğeleri arayın yoksa, sadece piton ve her şeffaf Görüntü sınıfını kullanarak jpg için png dönüştürmek piksel beyaza ayarlanır.

İlgili konular