'Take screenshot of the full table selenium python

I have a code that enables me to open a specific webpage and enter a case number then the code manipulates the captcha. After that, I have a table and I need to take screenshot of the full table (The problem is that the table is sometimes lengthy and out of sight) This is my code (The code works but takes screenshot of the screen sight only)

import pytesseract, cv2, os, re
import requests
import pandas as pd
from time import sleep
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

baseURL = "https://eservices.moj.gov.kw/"
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
sNumber, sTemp = 'Number.png', 'Temp.png'
myCaseNumber = '91266680'
caseList = []

def getNumber(img):
    sTemp = 'Temp.png'
    command = 'magick convert {} -resize 400x200 -density 300 -quality 100 {}'.format(img, sTemp)
    os.system(command)
    image = cv2.imread(sTemp)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(gray, (3,3), 0)
    thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
    invert = 255 - opening
    data = pytesseract.image_to_string(invert, lang='eng', config='--psm 6 -c tessedit_char_whitelist=0123456789')
    try:
        data  = re.findall("(\d{4})\D", data)[0]
    except:
        data = '0000'
    return data

while True:
    driver.get(baseURL + 'searchPages/searchCases.jsp')
    element = driver.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.screenshot(sNumber)
    myCaptcha = getNumber(sNumber)

    caseNumber = driver.find_element_by_id('txtCaseNo')
    caseNumber.clear()
    caseNumber.send_keys(myCaseNumber)

    txtCaptcha = driver.find_element_by_id('txtCaptcha2')
    txtCaptcha.clear()
    txtCaptcha.send_keys(myCaptcha)
    driver.find_element_by_id('cmdSubmit').click()
    try:
        if driver.find_element_by_xpath('//span/h4').text == 'معلومات القضية ' + myCaseNumber:
            break
    except:
        continue

button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="SrvTabs1"]/div/div/div[1]/nav/div/ul/li[1]/a')))
driver.execute_script("arguments[0].click();", button)

eleTable = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//table[@class="table table-striped"]')))
total_height = eleTable.size["height"]+1000
driver.set_window_size(1920, total_height)
time.sleep(2)
driver.save_screenshot("Output.png")

This is the desired output as for screenshot enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source