I am trying to take the screenshot of the size chart modal inside page here. The modal will be opened when we click the SIZE CHART link ( In my case, i had to wait around 30 sec before the link appeared in the page ).
However i am not getting the screenshot of the overlay modal , instead getting the parent page.
Here is my code,
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
url = 'https://fightco.co.uk/products/rival-face-saver-head-guard-1'
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920,1080")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.maximize_window()
driver.get(url)
time.sleep(1)
# Click the SIZE CHART link
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'ccpops-trigger-container')))
driver.execute_script("arguments[0].scrollIntoView(true);", element)
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, 'ccpops-trigger-container')))
driver.execute_script("arguments[0].click()",element)
# Wait for the modal to appear
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id='ccpops-popup']')))
driver.execute_script("arguments[0].scrollIntoView(true);", element)
# Taking the full screenshot
element_width = element.size['width']
element_height = element.size['height']
driver.set_window_size(element_width, element_height)
driver.execute_script("arguments[0].scrollIntoView(true);", element)
element.screenshot("/app/test.png")
Instead of getting,
I am getting
Ideally i would like to get the screenshot of the popup modal including the scrolled content as well .
I am using Python 3.9 , selenium==4.1.0, chromium and chromium-driver