Попытка сделать и сохранить снимок экрана с указанным c элементом (селен, python, хроматический драйвер) - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь снять и сохранить скриншот блока изображения + комментарий, который можно увидеть, перейдя к https://www.instagram.com/p/B9MjyquAfkE/. Ниже приведен тестируемый фрагмент моего кода.

Я получаю сообщение об ошибке:
article.screenshot_as_png ('article.png') TypeError: объект 'bytes' не может быть вызван

Похоже, что код может найти статью , но есть проблема со скриншотом. Я также пытаюсь указать определенное место, где я хочу сохранить свой скриншот на моем компьютере.

from selenium import webdriver
import time

class bot:

    def __init__(self):
        self.driver = webdriver.Chrome("path to chrome driver here")

    def screenShot(self):
        driver = self.driver
        driver.get("https://www.instagram.com/p/B9MjyquAfkE/")
        time.sleep(2)
        #find post+comments block on page
        article = driver.find_elements_by_xpath('//div[@role="dialog" or @id="react-root"]//article')[-1]
        #take screenshot of the post+comments block 
        article.screenshot_as_png('article.png')

if __name__ == "__main__":
    bot = bot()
    bot.screenShot()

1 Ответ

1 голос
/ 02 апреля 2020

Попробуйте вместо

article.screenshot_as_png('article.png')

Это:

screenshot_as_bytes = article.screenshot_as_png
with open('article.png', 'wb') as f:
    f.write(screenshot_as_bytes)

Объяснение:

article.screenshot_as_png - это уже скриншот в байтах, все что вам нужно сделать, это чтобы сохранить это. Если попытаться вызвать его как article.screenshot_as_png(), то будет выполняться попытка выполнения в байтах, отсюда ошибка: TypeError: 'bytes' object is not callable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...