[英]Transparent screenshot with PhantomJS in Selenium [Python]?
當我用PhantomJS作為Selenium中的webdriver進行截圖時,我得到的只是透明背景。 有什么線索的原因? 它適用於Google.com等網頁,但不適用於我想要的kahoot.it。 它也適用於我在Firefox中需要的所有其他內容,但不適用於PhantomJS。
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)
time.sleep(12)
driver.set_window_size(1024, 768)
driver.get('http://www.kahoot.it')
driver.save_screenshot('testing.png')
任何幫助將非常感激! :)
您的問題與您的網站有關。
您將其鍵入為http://www.kahoot.it但最終會重定向到https站點。 因此,如果出現錯誤,您的PhantomJS會從ssl版本或ssl本身獲得錯誤。
將你的webdriver.PhantomJS()修改為: driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any', '--web-security=false'])
所有應該運行正常。
另一方面,如果你不喜歡透明背景設置自己的: driver.execute_script('document.body.style.background = "black"')
。
在第一個示例中,您將看到只有左框架變黑,這是因為頂部項目已設置為白色背景。 在kahoot示例中,您無法設置它,因為該網頁具有自己的javascript自動轉換腳本。 您應該在嘗試更改之前將其移除,否則您的設置將很快或稍后被覆蓋。
完整代碼,准備運行:
#!/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')
如果您不想查找DOM項目,建議其他透明問題,只需使用Image類為python將您的png轉換為jpg,並將每個透明像素設置為白色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.