2017-08-04 12 views
0

pythonseleniumを使用すると、スクリーンショットにテキストを追加することはできますか?私はjavaで何かをするとこれができるのを見ましたが、pythonを使うと何も見えませんでした。python seleniumで撮影したスクリーンショットにテキストを追加することはできますか?

+0

これは、しかし答え:) – Nabin

+5

をあなたはセレンを使用してイメージを作成したら、あなたはPILを使用することができ値します。 'import PIL'を実行し、次のリンクを使ってテキストを追加してください。 [pilを使って画像にテキストを書く](https://stackoverflow.com/questions/8154825/how-can-i-write-text-over-an-image-and-overlay-another-image-on-it-in -python) – Haranadh

答えて

0

使用PIL画像モジュール読みPILイメージモジュールのマニュアルHere

from PIL import Image 
from PIL import ImageDraw 
from PIL import ImageFont 

img = Image.open("screen.png") 
draw = ImageDraw.Draw(img) 
font = ImageFont.truetype("clear_san.ttf", 23) 
sample_text="hello world!" 
draw.text((100, 100),sample_text,(28,28,28),font=font) 
#here (100,100) is the x,y location of the text and (28,28,28) is the color 
#of font which is drawn on canvas 
img.save("final.png")#saving the image 
#see the image attached 

enter image description here

0

あなたはPythonのセレン及び(組み込み)のjavascriptのビットを使用して、このような何かを行うことができます。

from selenium import webdriver 

def main(): 

    URL = 'https://www.google.com' 
    SAVE_PATH = '/path/to/screenshots/screenshot.png' 
    browser = webdriver.Firefox() 
    browser.get(URL) 
    browser.execute_script(script()) 
    browser.save_screenshot(SAVE_PATH) 

def script(): 

    return 'myCanvas = document.createElement("canvas");'\ 
    + 'myCanvas.id = "myCanvas";'\ 
    + 'myCanvas.width = document.body.clientWidth;'\ 
    + 'myCanvas.height = 60;'\ 
    + 'document.body.insertBefore(myCanvas, document.body.firstChild);'\ 
    + 'var ctx = myCanvas.getContext("2d");'\ 
    + 'ctx.font = "50px Monospace";'\ 
    + 'displayedText = "Hello World!";'\ 
    + 'ctx.strokeText(displayedText, document.body.clientWidth/2 - 150, 50);' 

if __name__ == "__main__": 
    main() 

ただし、すべてのサイトでうまく機能せず、displayedTextの値によっては、ハードコードされたv myCanvas.heightおよびctx.strokeTextパラメータの値を使用して正しく取得できます。

+0

これは本当に興味深い – user655489

関連する問題