adding projects to repo

This commit is contained in:
dtomlinson
2019-11-04 14:38:31 +00:00
parent 6728b1ecf3
commit a285fad1ee
65 changed files with 171244 additions and 1 deletions

View File

@@ -0,0 +1,137 @@
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import ElementNotInteractableException
from time import sleep
import os
class getDashboardScreenshot(object):
def __init__(
self,
driver: webdriver,
url: str,
username: str,
password: str,
width: int = 0,
height: int = 10000,
path: str = os.getcwd(),
delay: int = 1,
):
super(getDashboardScreenshot, self).__init__()
self.driver = driver
self.action = ActionChains(driver)
self.url = url
self.username = username
self.password = password
self.width = width
self.height = height
self.path = self.checkPath(path)
self.delay = delay
def __enter__(self):
return self
def __exit__(self, exception_type, exception_value, traceback):
self.driver.quit()
@classmethod
def createDriver(
cls,
url: str,
username: str,
password: str,
width: int = 0,
height: int = 0,
type: str = 'chromium',
path: str = os.getcwd(),
delay: int = 1,
):
if type == 'chromium':
options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
else:
print(f'No supported browser {type}')
return cls(driver, url, username, password, width, height, path, delay)
@staticmethod
def checkPath(path: str) -> str:
if path[-1] != '/':
path += '/'
return path
def _setWidth(self, jsProperty: str, override: int):
script = 'return document.body.parentNode.scroll' + (jsProperty)
return self.driver.execute_script(script) + override
def _logIn(self):
self.usernameElement = self.driver.find_element_by_xpath(
'//*[@id="username"]'
)
self.passwordElement = self.driver.find_element_by_xpath(
'//*[@id="password"]'
)
self.usernameElement.send_keys(self.username)
self.passwordElement.send_keys(self.password)
self.driver.find_element_by_xpath(
'/html/body/div[2]/div/div/div[1]/form/fieldset/input[1]'
).click()
sleep(2)
return self
def _hideElements(self):
try:
self.driver.find_element_by_class_name(
'hide-global-filters'
).click()
except (NoSuchElementException, ElementNotInteractableException):
pass
try:
element = self.driver.find_element_by_class_name('dashboard-menu')
self.driver.execute_script(
"arguments[0].style.visibility = 'hidden';", element
)
except NoSuchElementException:
pass
try:
self.action.move_to_element(
self.driver.find_element_by_class_name('dashboard-title')
).perform()
sleep(1)
except NoSuchElementException:
pass
return self
def _goToDashboard(self):
self.driver.get(self.url)
self.driver.implicitly_wait(10)
self.driver.maximize_window()
self._logIn()
return self
def takeScreenshot(self):
self._goToDashboard()
self.driver.set_window_size(
self._setWidth('Width', self.width),
self._setWidth('Height', self.height),
)
self._hideElements()
sleep(self.delay)
self.driver.find_element_by_class_name('dashboard-body').screenshot(
f'{self.path}web_screenshot.png'
)
return self
with getDashboardScreenshot.createDriver(
url='https://sc1uxpremn81:8000/en-US/app/wh_weekly_standup/weekly_standup_'
'data?form.time_tok.earliest=-7d%40h&form.time_tok.latest=now&hideFilters='
'true',
username='admin',
password='fWgbz6AU',
width=1000,
height=10000,
delay=5,
) as screenShot:
screenShot.takeScreenshot()