Python 如何从字符串生成带有/selenium/phantomjs的png文件?

Python 如何从字符串生成带有/selenium/phantomjs的png文件?,python,selenium,phantomjs,Python,Selenium,Phantomjs,我使用selenium/phantomjs在python中创建html的png文件。有没有办法从html字符串或文件句柄(而不是网站)生成png?我已经搜索了selenium文档并在Google上搜索了一下,但没有找到答案。我有: htmlString = '<html><body><div style="background-color:red;height:500px;width:500px;">This is a png</div></

我使用selenium/phantomjs在python中创建html的png文件。有没有办法从html字符串或文件句柄(而不是网站)生成png?我已经搜索了selenium文档并在Google上搜索了一下,但没有找到答案。我有:

htmlString = '<html><body><div style="background-color:red;height:500px;width:500px;">This is a png</div></body></html>'
myFile = 'tmp.html'
f = open(myFile,'w')
f.write(htmlString) 

from selenium import webdriver  

driver = webdriver.PhantomJS()
driver.set_window_size(1024, 768) 
#driver.get('https://google.com/') # this works fine
driver.get(myFile) # passing the file name or htmlString doesn't work...creates a blank png with nothing
driver.save_screenshot('screen.png') 
driver.quit()

print "png file created"
htmlString='这是一个png'
myFile='tmp.html'
f=打开(myFile,'w')
f、 写入(htmlString)
从selenium导入webdriver
driver=webdriver.PhantomJS()
驱动程序。设置窗口大小(1024768)
#司机,上车https://google.com/)#这个很好用
driver.get(myFile)#传递文件名或htmlString不起作用…创建一个没有任何内容的空白png
driver.save_屏幕截图('screen.png')
driver.quit()
打印“已创建png文件”

PhantomJS

var page = require('webpage').create();
page.open('http://github.com/', function () {
    page.render('github.png');
    phantom.exit();
});
var page = require('webpage').create();
page.content = '<html><body><p>Hello world</p></body></html>';
page.render('name.png');
这是如何在phantomJS中获得屏幕截图,我已经使用phantomJS一段时间了

你可以找到更多信息

driver = webdriver.Chrome();
driver.get('http://www.google.com');
driver.save_screenshot('out.png');
driver.quit();

希望这有帮助。

PhantomJS

var page = require('webpage').create();
page.open('http://github.com/', function () {
    page.render('github.png');
    phantom.exit();
});
var page = require('webpage').create();
page.content = '<html><body><p>Hello world</p></body></html>';
page.render('name.png');

纯好的老python—通过JS将任何打开页面上的内容设置为目标html。以您的代码为例:

from selenium import webdriver

htmlString = '<html><body><div style="background-color:red;height:500px;width:500px;">This is a png</div></body></html>'

driver = webdriver.PhantomJS() # the normal SE phantomjs binding
driver.set_window_size(1024, 768)
driver.get('https://google.com/') # whatever reachable url
driver.execute_script("document.write('{}');".format(htmlString))  # changing the DOM

driver.save_screenshot('screen.png')   #screen.png is a big red rectangle :)
driver.quit()

print "png file created"
从selenium导入webdriver
htmlString='这是一个png'
driver=webdriver.PhantomJS()#正常的SE PhantomJS绑定
驱动程序。设置窗口大小(1024768)
司机,上车https://google.com/“)#任何可访问的url
driver.execute_脚本(“document.write({}”);”.format(htmlString))#更改DOM
driver.save_屏幕截图('screen.png')35; screen.png是一个大的红色矩形:)
driver.quit()
打印“已创建png文件”
这句话似乎是对的

f = open(myFile,'w')
f.write(htmlString) 
有问题,因为生成的文件是空的

我已经用计算机解决了这个问题

with open(myFile,'wt') as f:
    f.write(htmlString)
或者您可能需要添加一个

f.close() to your code

你试过
file:///PathToFile/tmp.html
?这也给了我一个空白的png文件。在任何地方都有记录吗?没有。我从未使用过PhantomJS,但文件:///是浏览器用来访问文件的文件。我没有转义上面的那行(现在我无法编辑它)…你确定它转义了吗?有帮助吗?你应该从Selenium(Python)部分删除分号。你不必这样做