Need screenshot from URL using chromedriver and selenium

Viewed 64

I am able to take screenshot of Website, but I need to take screenshot from URL like we do using snipping tool, but based on screen_size , pixel or want to do some scroll up and scroll down operation to get other images. Please suggest me a way to get picture from below URL

https://artsandculture.google.com/asset/FgEEOnrrqsn9OA

I am using below code in AWS Lambda:

import json
#coding=utf-8                                                                                                                                                                              
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
import logging
import os


class WebDriver(object):

    def __init__(self):
        self.options = Options()

        self.options.binary_location = '/opt/headless-chromium'
        #self.options.add_argument('--headless')
        self.options.add_argument('--no-sandbox')
        #self.options.add_argument('--start-maximized')
        #self.options.add_argument('--start-fullscreen')
        self.options.add_argument('--single-process')
        self.options.add_argument('--disable-dev-shm-usage')
        self.options.add_argument("--kiosk")

    def get(self):
        driver = Chrome('/opt/chromedriver', options=self.options)
        return driver


def lambda_handler(event, context):
    instance_ = WebDriver()
    driver = instance_.get()
    options = Options()
    a = os.listdir('/tmp')
    for x in a:
        print(x)
    URL = os.environ.get("URL")
    
    driver.get(URL)
    
    S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
    #driver.set_window_size(S('Width'),S('Height'))
    #driver.set_window_size(1280, 720)
    # May need manual adjustment                                                                                                                
    driver.find_element_by_tag_name('body').screenshot('/tmp/job_status.png')
    
    driver.quit()

enter image description here

1 Answers

I am using xpath to get particular division of class.

driver.find_element_by_xpath('/html/body/div/div[1]/section[2]/div[1]/div/div[2]').screenshot('/tmp/daily_job_status.png')
Related