def get_screenshot(request): """ Take a screenshot and return a png file based on the url. """ if request.method == 'POST' and 'url' in request.POST: url = request.POST.get('url', '') if url is not None and url != '': path = cdi.install(file_directory='./lib/', verbose=True, chmod=True, overwrite=False, version=None) driver = webdriver.Chrome(path) driver.get(url) # driver.set_window_size(width, height) el = driver.find_element_by_tag_name('body') el.screenshot('screenshot.png') # screenshot = driver.get_screenshot_as_png() screenfile = '' with open("screenshot.png", "rb") as imageFile: screenfile = base64.b64encode(imageFile.read()) os.remove('screenshot.png') # image_64_encode = base64.encodestring(screenshot) var_dict = {'screenshot': screenfile} driver.quit() # return render(request, 'index.html', var_dict) return render(request, 'dsrshot/index.html', var_dict) else: return HttpResponse('Error')
def setUp(self): path = cdi.install(file_directory='./lib/', verbose=False, chmod=True, overwrite=False, version=None) self.driver = webdriver.Chrome(path)
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import chromedriver_install as cdi from selenium.common.exceptions import TimeoutException path = cdi.install(file_directory='./lib/', verbose=False, chmod=True, overwrite=False, version=None) driver = webdriver.Chrome(path) driver.get("http://www.yahoo.com") try: # tells WebDriver to poll the DOM for a certain amount driver.implicitly_wait(10) # seconds myDynamicElement = driver.find_element_by_id("myDynamicElement") # WebDriverWait by default calls the ExpectedCondition every 500 milliseconds until it returns successfully. # wait = WebDriverWait(driver, 10) # element = wait.until( # EC.presence_of_element_located((By.ID, "myDynamicElement")) # ) except TimeoutException as error: print(error) print('The TimeoutException() function was executed') finally:
import re from subprocess import run import chromedriver_install as cdi # https://chromedriver.chromium.org/downloads Versions = {"88": "88.0.4324.96", "83": "83.0.4103.39"} chrome_version = ( run(["google-chrome", "--version"], capture_output=True) .stdout.decode("utf-8") .strip() ) print(chrome_version) major = re.search("Google Chrome (\d+)", chrome_version).group(1) cdi.install(file_directory="tests/selenium", overwrite=True, version=Versions[major])