Example #1
0
 def __init__(self, path):
     self.path_root = path
     self.driver_builder = DriverBuilder()
     download_path = self.path_root
     print("download_path=", download_path)
     self.driver = self.driver_builder.get_driver(download_path,
                                                  headless=True)
Example #2
0
    def test_download(self):

        driver_builder = DriverBuilder()

        download_path = path.dirname(path.realpath(__file__))

        expected_download = path.join(download_path, "5MB.zip")

        # clean downloaded file
        try:
            remove(expected_download)
        except OSError:
            pass

        assert (not path.isfile(expected_download))

        driver = driver_builder.get_driver(download_path, headless=True)

        driver.get("https://www.thinkbroadband.com/download")

        clone_box = driver.find_element_by_xpath(
            '//*[@id="main-col"]/div/div/div[8]/p[1]/a/img')
        clone_box.click()

        self.wait_until_file_exists(expected_download, 30)
        driver.close()

        assert (path.isfile(expected_download))

        print("done")
	def __init__(self):
		self.download_dir = os.path.join(
			os.path.dirname(os.path.abspath(__file__)), 'NewsPapers')
		self.driver_builder = DriverBuilder()
		self.driver = self.driver_builder.get_driver(download_location=self.download_dir)
		# Paste start-url and add  and 
		extension_string = '&seg='
		self.start_url = 'https://srv-web1.parliament.gr/library.asp?item=40200' + extension_string
Example #4
0
    def getmerch(self):
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        from selenium.webdriver.common.action_chains import ActionChains
        from pyvirtualdisplay import Display
        from driver_builder import DriverBuilder

        file = os.path.join(dwn, "Merchants.xlsx")
        if os.path.exists(file):
            os.remove(file)
        """Setup options for chrome web browser"""
        mn = Main()
        #display = Display(visible=0, size=(800, 600))
        #display.start()

        driver_builder = DriverBuilder()
        self.browser = driver_builder.get_driver(dwn, headless=False)
        browser = self.browser

        browser.get("https://portal.elevateqs.com/login.aspx")

        username = browser.find_element_by_id("username")
        password = browser.find_element_by_id("password")
        print(os.environ["tri_username"])
        print(os.environ["tri_password"])
        username.send_keys(os.environ["tri_username"])
        password.send_keys(os.environ["tri_password"])

        browser.find_element_by_id("login").click()
        # go to chargebacks
        browser.get(
            "https://portal.elevateqs.com/Reporting/merchantsearch.aspx")

        # open filter
        sortcode = browser.find_element_by_id("s2id_autogen1")
        sortcode.send_keys("6101")
        time.sleep(.4)
        browser.find_element_by_class_name("select2-results-dept-0").click()
        #ActionChains(sortcode).move_to_element().click().perform()
        browser.find_element_by_id("Search").click()
        time.sleep(1)
        browser.find_element_by_xpath("//*[text()=' Export']").click()
        time.sleep(5)
        browser.quit()
        try:
            #display.close()
            "ds"
        except AttributeError:
            print("The Display is already closed?")

        os.chmod(file, 0o777)
 def login_to_website(self):
     id_info, pw_info = peripharial_info().get_user_info()
     driver_builder = DriverBuilder()
     driver = driver_builder.get_driver(headless=False)
     driver.get(self.web_site_address)
     element_id = driver.find_element_by_id(
         "ContentPlaceholder_C001_txtUserName")
     self.wait_until_page_refreshed(element_id)
     element_id.clear()
     element_id.send_keys(id_info)  #id_info
     element_pw = driver.find_element_by_id(
         "ContentPlaceholder_C001_txtPassword")
     element_pw.clear()
     element_pw.send_keys(pw_info)  #pw_info
     driver.find_element_by_id("ContentPlaceholder_C001_btnLogin").click()
     return driver
Example #6
0
class RMPDownload:
    def __init__(self,path):
        self.path_root=path
        self.driver_builder = DriverBuilder()
        download_path = self.path_root
        print("download_path=",download_path)
        self.driver = self.driver_builder.get_driver(download_path, headless=True)

    def download(self,addr,name,num1,num2):

        self.driver.get(addr) 

        try :
            js=CLICK_A_NUM % num1
            self.driver.execute_script(js)
        except: 
            print("exception 1 ")

        sleep(10)  

        try :
            js=CLICK_A_NUM % num2
            self.driver.execute_script(js)
        except:
            print("exception 2 ")

        self.wait_until_file_exists(name, 20)

        self.driver.close()

        print("done")

    def wait_until_file_exists(self, actual_file, wait_time_in_seconds=5):
        waits = 0
                      
        while waits < wait_time_in_seconds:
            fileList=os.listdir(self.path_root)
            for file in fileList:
               print("file name=",file)
               if file == actual_file :
                    return 

            print("sleeping...." + str(waits))
            sleep(.5)  # make sure file completes downloading
            waits += .5

    def download_by_quip(self,addr,name,num1,num2):
        print("testing download")

        fileList=os.listdir(self.path_root)
        for file in fileList:
            print("file name=",file)
            if file.find(name) >=0 :
                os.remove(self.path_root+file)

        self.download(addr,name,num1,num2)
def restart(d, download_dir=download_dir):
    global driver
    driver.close()
    time.sleep(5)
    if d == 'fox':
        print 'Starting Firefox'
        fp = webdriver.FirefoxProfile()
        fp.set_preference("browser.download.folderList", 2)
        fp.set_preference("browser.download.manager.showWhenStarting", False)
        fp.set_preference("browser.download.dir", download_dir)
        fp.set_preference("browser.preferences.instantApply", True)
        fp.set_preference(
            "browser.helperApps.neverAsk.saveToDisk",
            "text/plain, application/octet-stream, application/binary, text/csv, application/csv, application/excel, text/comma-separated-values, text/xml, application/xml, text/csv"
        )
        global driver
        driver = webdriver.Firefox(firefox_profile=fp)
        driver.maximize_window()
    elif d == 'chrome':
        print 'Starting Chrome'
        caps = DesiredCapabilities.CHROME
        caps['loggingPrefs'] = {'performance': 'ALL'}

        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        prefs = {
            "profile.default_content_settings.popups": 0,
            "download.default_directory": download_dir,
            "directory_upgrade": True
        }
        options.add_experimental_option("prefs", prefs)
        options.add_argument('log-level=3')
        global driver
        driver = webdriver.Chrome(chrome_options=options,
                                  desired_capabilities=caps)
    elif d == 'headless_chrome':
        print 'Starting headless Chrome'
        driver_builder = DriverBuilder()
        global driver
        driver = driver_builder.get_driver(download_dir, headless=True)
Example #8
0
    def getstatement(self):
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        from selenium.webdriver.common.action_chains import ActionChains
        from pyvirtualdisplay import Display
        from driver_builder import DriverBuilder
        """Setup options for chrome web browser"""
        mn = Main()
        mid_to_search = mn.get_mid_search()
        display = Display(visible=0, size=(800, 600))
        display.start()

        driver_builder = DriverBuilder()
        self.browser = driver_builder.get_driver(dwn, headless=False)
        browser = self.browser

        browser.get("https://www.youraccessone.com")

        username = browser.find_element_by_id("txtUserName")
        password = browser.find_element_by_id("txtPassword")

        username.send_keys(os.environ["username"])
        password.send_keys(os.environ["password"])

        browser.find_element_by_name("uxLogin").click()
        # go to chargebacks
        browser.get("https://www.youraccessone.com/64_rpt_Statements.aspx")

        # open filter
        browser.find_element_by_xpath("//*[text()='FILTER']").click()

        for item in mid_to_search:
            # check my merchant
            print(item)
            for x in range(5):
                try:
                    browser.find_element_by_id(
                        "ctl00_ContentPage_uxFiltering_uxReportFilter_ctl00"
                    ).click()
                    break
                except NoSuchElementException:
                    time.sleep(2)

            time.sleep(2)
            browser.find_element_by_xpath(
                "//*[text()='Merchant Number']").click()
            time.sleep(.5)
            mid = browser.find_element_by_id(
                "ctl00_ContentPage_uxFiltering_uxReportFilter_inMERCHANTNUMBER"
            )
            mid.clear()
            mid.send_keys(item)

            # Click search
            time.sleep(.5)
            try:
                browser.find_element_by_name(
                    "ctl00$ContentPage$uxFiltering$uxReportFilter$btSubmit"
                ).click()
                my_val = browser.find_element_by_name(
                    "ctl00$ContentPage$uxdroplist").get_attribute("value")
                my_val = datetime.strptime(my_val, '%m/%d/%Y')
                now = datetime.now() - relativedelta(months=1)
                print(my_val.month, now.month, my_val.year, now.year)
                if my_val.month == now.month and my_val.year == now.year:
                    browser.find_element_by_name(
                        "ctl00$ContentPage$uxSearch").click()
            except NoSuchElementException:
                continue

        browser.quit()
        try:
            display.close()
        except AttributeError:
            print("The Display is already closed?")
    def gettransactions(self, count=0):
        """Get a csv from youraccessone transactions"""
        mn = Main()
        display = Display(visible=0, size=(800, 600))
        display.start()

        driver_builder = DriverBuilder()
        browser = driver_builder.get_driver(dwn, headless=False)

        browser.get('https://www.youraccessone.com')

        username = browser.find_element_by_id("txtUserName")
        password = browser.find_element_by_id("txtPassword")

        username.send_keys(os.environ['username'])
        password.send_keys(os.environ['password'])

        browser.find_element_by_name("uxLogin").click()

        # go to transactions
        browser.get(
            'https://www.youraccessone.com/64_rpt_TransactionSearch.aspx')

        # open filter
        browser.find_element_by_xpath("//*[text()='FILTER']").click()

        # toggle daily
        browser.find_element_by_xpath("//*[text()='Daily']").click()

        # check all merchants
        browser.find_element_by_id(
            "ctl00_ContentPage_uxHierarchyList_Input").click()
        time.sleep(2)
        browser.find_element_by_xpath("//*[text()='SYS']").click()

        # fill in the field
        my_sys = browser.find_element_by_name(
            "ctl00$ContentPage$uxEntityValue")
        my_sys.send_keys('1261')

        # submit to apply filters
        browser.find_element_by_id("ctl00_ContentPage_uxSearch").click()

        time.sleep(10)

        # download transaction
        count = 0
        element_to_hover_over = browser.find_element_by_xpath(
            "//*[text()='EXPORT']")
        hover = ActionChains(browser).move_to_element(element_to_hover_over)
        hover.perform()

        time.sleep(5)
        try:
            browser.find_element_by_xpath("//*[text()='CSV']").click()
        except NoSuchElementException:
            browser.quit()
            display.stop()
            if count >= 5:
                sys.exit(
                    "Ran find element by CSV 5 times and still not getting a decent CSV, marking as failed, try agian later"
                )
            i = count + 1
            mn.gettransactions(i)
        time.sleep(2)

        for file in os.listdir("csv"):
            my_file = os.path.join(dwn, file)
            if file.endswith(".csv"):
                fileObject = csv.reader(my_file)
                row_count = sum(1 for row in fileObject)
                if row_count > 1:
                    break

        browser.quit()
        display.stop()
    def get_authorizations(self):
        """Get all the authorizations from firstdata for parsing into the firstdata.authorization table"""
        mn = Main()
        mid_to_search = mn.get_mid_search()

        """Get a csv from youraccessone transactions"""
        display = Display(visible=0, size=(800, 600))
        display.start()

        driver_builder = DriverBuilder()
        browser = driver_builder.get_driver(dwn, headless=False)

        browser.get('https://www.youraccessone.com')

        username = browser.find_element_by_id("txtUserName")
        password = browser.find_element_by_id("txtPassword")

        username.send_keys(os.environ['username'])
        password.send_keys(os.environ['password'])

        browser.find_element_by_name("uxLogin").click()

        time.sleep(1)
        # go to authorizations
        element_to_hover_over = browser.find_element_by_xpath(
            "//*[text()='Reports ']")
        hover = ActionChains(browser).move_to_element(element_to_hover_over).move_to_element(browser.find_element_by_xpath(
            "//*[text()='Authorization Log']")).move_to_element(browser.find_element_by_xpath(
                "//*[text()='Authorizations']"))
        hover.click().perform()

        """open filter"""
        browser.find_element_by_xpath("//*[text()='FILTER']").click()

        """toggle daily"""
        #browser.find_element_by_xpath("//*[text()='Daily']").click()

        """This section for date range not currently used change Daily to Date Range then uncomment"""
        """get date range"""
        start = browser.find_element_by_id("ctl00_ContentPage_uxFiltering_uxReportFilter_dpFromDate_dateInput")
        start.clear()
        start.send_keys('03-24-2016')

        end = browser.find_element_by_id('ctl00_ContentPage_uxFiltering_uxReportFilter_dpToDate_dateInput')
        end.clear()
        end.send_keys('03-26-2018')

        """check all merchants"""

        for item in mid_to_search:
            # fill in the field
            browser.find_element_by_id(
                "ctl00_ContentPage_uxFiltering_uxReportFilter_ctl00_Input").click()
            time.sleep(2)
            browser.find_element_by_xpath("//*[text()='Merchant Number']").click()
            text_box = browser.find_element_by_id("ctl00_ContentPage_uxFiltering_uxReportFilter_inMERCHANTNUMBER")
            text_box.clear()
            text_box.send_keys(item)

            # submit to apply filters
            try:
                browser.find_element_by_id("ctl00_ContentPage_uxFiltering_uxReportFilter_btSubmit").click()

                time.sleep(2)

                # download transaction
                count = 0
                element_to_hover_over = browser.find_element_by_xpath(
                    "//*[text()='EXPORT']")
                hover = ActionChains(browser).move_to_element(element_to_hover_over)
                hover.perform()

                browser.find_element_by_xpath("//*[text()='CSV']").click()
                time.sleep(2)

            except NoSuchElementException:
                continue

        browser.quit()
        display.stop()
Example #11
0
    def getchargeback(self):
        """Setup options for chrome web browser"""
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        from pyvirtualdisplay import Display
        from driver_builder import DriverBuilder
        from selenium.common.exceptions import NoSuchElementException

        display = Display(visible=0, size=(800, 600))
        display.start()

        driver_builder = DriverBuilder()
        self.browser = driver_builder.get_driver(dwn, headless=False)
        browser = self.browser

        browser.get('https://www.youraccessone.com')

        username = browser.find_element_by_id("txtUserName")
        password = browser.find_element_by_id("txtPassword")

        username.send_keys(os.environ['username'])
        password.send_keys(os.environ['password'])

        browser.find_element_by_name("uxLogin").click()
        """go to chargebacks"""
        browser.get('https://www.youraccessone.com/64_rpt_Chargebacks.aspx')
        """open filter"""
        browser.find_element_by_xpath("//*[text()='FILTER']").click()
        """toggle daily"""
        browser.find_element_by_xpath("//*[text()='Daily']").click()
        """This section for date range not currently used change Daily to Date Range then uncomment"""
        """get date range"""
        """start = browser.find_element_by_id("ctl00_ContentPage_uxFiltering_uxDateRangeFrom_dateInput")
        start.clear()
        start.send_keys('01-01-2018')

        end = browser.find_element_by_id('ctl00_ContentPage_uxFiltering_uxDateRangeTo_dateInput')
        end.clear()
        end.send_keys('05-01-2018')"""
        """check all merchants"""
        browser.find_element_by_id(
            "ctl00_ContentPage_uxFiltering_uxOmahaHierarchies_uxchbAllMerchants"
        ).click()
        """submit to apply filters"""
        browser.find_element_by_id(
            "ctl00_ContentPage_uxFiltering_uxbtnDisplayRunReport").click()

        time.sleep(5)

        window_before = browser.window_handles[0]
        print(browser.title)

        while True:
            time.sleep(3)
            table_id = browser.find_element_by_class_name("rgMasterTable")
            for i in range(0, 10):
                mn.get_pdf_row(i, table_id)

            try:
                enabl = browser.find_element_by_name(
                    'ctl00$ContentPage$uxReportGrid$ctl00$ctl03$ctl01$ctl00$pagerNextButton'
                )
                print(enabl.is_enabled())
                if enabl.is_enabled():
                    enabl.click()
                else:
                    break
                    time.sleep(5)
            except NoSuchElementException:
                break

        browser.quit()
        display.stop()
Example #12
0
from selenium.webdriver.support.ui import WebDriverWait

import random
import struct
import hashlib
from Cryptodome.Cipher import AES
from element import ButtonElement, InputElement, SelectElement

with open(sys.argv[1]) as cred_file:
    cred = json.load(cred_file)

username = cred["krx_user"]
password = cred["krx_pass"]
secret = cred["passphrase"]

driver_builder = DriverBuilder()
driver = driver_builder.get_driver(download_location=os.getcwd(),
                                   headless=True)
driver.get("http://index.krx.co.kr")
wait = WebDriverWait(driver, 20)

# Click 'Sign in' Button
sign_in = ButtonElement(driver, (By.CSS_SELECTOR, "a.sign-in"))

account_type = SelectElement(
    driver, (By.XPATH, "//select[@name='kind']/option[text()='λ²•μΈνšŒμ›']"))

id_input = InputElement(driver, (By.CSS_SELECTOR, "input[name='id']"))
id_input.value(username)

passwd_input = InputElement(driver, (By.CSS_SELECTOR, "input[name='pw']"))
class Web1Parliament:

	def __init__(self):
		self.download_dir = os.path.join(
			os.path.dirname(os.path.abspath(__file__)), 'NewsPapers')
		self.driver_builder = DriverBuilder()
		self.driver = self.driver_builder.get_driver(download_location=self.download_dir)
		# Paste start-url and add  and 
		extension_string = '&seg='
		self.start_url = 'https://srv-web1.parliament.gr/library.asp?item=40200' + extension_string
		# self.start_url = 'https://srv-web1.parliament.gr/library.asp?item=39094&seg='

	def get_newspaper_titles(self):
		self.driver.get(self.start_url)
		container = self.driver.find_elements_by_tag_name('option')#'//*[@name="seg"]')
		values, titles = [], []
		for option in container[1:]:
			value = option.get_attribute('value')
			title = option.get_attribute('innerHTML')
			title = title.replace('/', '-')
			values.append(value)
			titles.append(title)
		return values, titles

	def open_newspaper(self, value):
		#self.select_option(xpath=menu_xpath, by=value, value_or_text=value)
		#print (value)
		#time.sleep(10)
		submit_btn = self.driver.find_element_by_xpath('//*[@type="submit"]')
		doc_base_url = self.start_url.replace('library', 'display_doc')
		#time.sleep(10)
		#submit_btn.click()
		newspaper_url = doc_base_url + value
		self.driver.get(newspaper_url)
		#self.switch_to_tab(tabnum=1)

	def select_option(self, xpath, by, value_or_text):
		select = Select(self.driver.find_element_by_xpath(xpath))
		if by == 'text':
			select.select_by_visible_text(value_or_text)
		elif by == 'value':
			select.select_by_value(value_or_text)

	def switch2frame(self, xpath):
		self.driver.switch_to.frame(self.driver.find_element_by_xpath(xpath))

	def wait_for_pageload(self, keywords, timeout=20, msg=True):
		starttime = datetime.datetime.now()
		timeout = datetime.timedelta(seconds=timeout)
		while True:
			try:
				html = self.driver.find_element_by_xpath('/html').get_attribute('outerHTML')
				if any(kwd in html for kwd in keywords):
					break
				elif datetime.datetime.now() > starttime + timeout:
					if msg == True:
						print ('timed out')
					break
			except Exception as e:
				pass

	def switch_to_tab(self, tabnum):
		self.driver.switch_to.window(self.driver.window_handles[tabnum])

	def download_newspapers(self, title):
		#self.wait_for_pageload(keywords=['open-button'])
		self.switch2frame('/html/frameset/frame[1]')
		pages = self.driver.find_elements_by_tag_name('option')
		values = [x.get_attribute('value') for x in pages]
		current_url = self.driver.current_url
		counter = 1
		for value in values:
			self.download_page(title, value, counter)
			self.restart_driver(current_url)
			self.switch2frame('/html/frameset/frame[1]')
			counter += 1
		self.driver.close()

	def download_page(self, title, value, counter):	
		self.select_option(xpath='//*[@id="lpages"]', by='value', value_or_text=value)
		self.driver.switch_to.default_content()
		self.switch2frame('//*[@id="middle"]')
		self.wait_for_pageload(keywords=['Open', 'open-button'])
		download_btn = self.driver.find_element_by_xpath('//*[@id="open-button"]')
		download_btn.click()
		self.wait4download(directory=self.download_dir)
		self.move_file(move_to=title, counter=counter)
		self.driver.switch_to.default_content()
		self.switch2frame('/html/frameset/frame[1]')

	def wait4download(self, directory, timeout=30):
		starttime = datetime.datetime.now()
		timeout = datetime.timedelta(seconds=timeout)
		while True:
			current_filecount = len(os.listdir(directory))
			folder = os.listdir(directory)
			str_folder = ''.join(folder)
			if 'crdownload' not in str_folder and '.pdf' in str_folder:
				return True
			elif datetime.datetime.now() > starttime + timeout:
				if msg == True:
					print ('timed out')
				return False

	def move_file(self, move_to, counter):
		filename = [x for x in os.listdir(self.download_dir) if '.pdf' in x][0]
		new_filename = '{}.pdf'.format(counter)
		os.rename(filename, new_filename)
		inpath = os.path.join(self.download_dir, new_filename)
		outpath = os.path.join(self.download_dir, move_to)
		try:
			shutil.move(inpath, outpath)
		except Exception as e:
			print(e)


	def restart_driver(self, url):
		self.driver.quit()
		self.driver = self.driver_builder.get_driver(self.download_dir, headless=False)
		self.driver.get(url)

	def make_dirs(self, titles):
		try:
			os.chdir(self.download_dir)
			for title in titles:
				os.mkdir(title)
		except FileExistsError:
			pass

	def main(self):
		values, titles = self.get_newspaper_titles()
		self.make_dirs(titles)
		# Adjust if pages to be excluded
		for i in range(0, len(values)):
			print (titles[i])
			self.open_newspaper(values[i])
			self.download_newspapers(titles[i])
			self.restart_driver(url=self.start_url)
Example #14
0
import numpy as np
import pandas as pd
import time
import string
import requests
import shutil
import os
from driver_builder import DriverBuilder

## Configurations
download_location = r"/Users/mayank.gupta/Moneygen/Downloads"
data_file_location = r"/Users/mayank.gupta/Moneygen/DataFiles"
sleep_duration = 3

### Load the chrome webdriver
driver = DriverBuilder().get_driver(download_location, headless=True)

### Get the web page using driver for BANKNIFTY
driver.get(
    "https://nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuoteFO.jsp?underlying=BANKNIFTY&instrument=FUTIDX&type=-&strike=-&expiry=25JUL2019"
)
time.sleep(sleep_duration)

### Select 'Options' as instrument type
instrument_type_element = driver.find_element_by_id("instruments")
instrument_selector = Select(instrument_type_element)
## Index is always index + 1 because 0 index corresponds to 'Select...'
instrument_selector.select_by_index(2)
time.sleep(sleep_duration)

### Get expiry dates of all available contracts
Example #15
0
    def test_download(self):

        driver_builder = DriverBuilder()

        download_path = "."

        # expected_download = path.join(download_path, "5MB.zip")

        # # clean downloaded file
        # try:
        #     remove(expected_download)
        # except OSError:
        #     pass

        # assert (not path.isfile(expected_download))

        browser = driver_builder.get_driver(download_path, headless=True)

        browser.get('https://www.funtoot.com/funtoot/#/app/login')
        time.sleep(2)

        browser.find_element_by_id('username').send_keys("ebl01t001")
        browser.find_element_by_id('password').send_keys("funtoot")
        browser.find_element_by_xpath(
            "/html/body/div[3]/div[1]/div/div[1]/div/div[2]/div[2]/form/div/div[5]/div[1]/div/div/button"
        ).send_keys(Keys.RETURN)
        time.sleep(10)

        def convert_xlsx_to_csv():
            files = glob.glob('*.xlsx')
            for file in files:
                os.system('ssconvert ' + file + ' ' + str(file.split('.')[0]) +
                          '.csv')

        def convert_to_old_data():
            pass

        def pre_process_data(cls):
            files = glob.glob('*.csv')
            df = []

            for file in files:
                if file[0] != 'a':
                    temp_df = pd.read_csv(file)
                    Time_stamp = []
                    for i in range(len(temp_df)):
                        Time_stamp.append(
                            str(datetime.datetime.now().strftime(
                                "'%d-%b-%Y %H:%M:%S")))
                    temp_df.insert(0, "Time Stamp", Time_stamp, True)
                    temp_df.rename(columns={
                        "Subj Progress":
                        "Subj Progress (%)",
                        "Concept Progress":
                        "Concept Progress (%)",
                        "SubConcept Progress":
                        "SubConcept Progress (%)"
                    },
                                   inplace=True)
                    df.append(temp_df)

            df[0].drop(['Start Date', 'End Date'], axis=1, inplace=True)
            df[0].drop([], axis=1, inplace=True)
            os.system('rm ./reports/time_series_data_' + cls + '.csv')
            # old_data = pd.read_csv('./reports/old_data_' + cls + '.csv')
            # new_df = pd.concat([df[0], old_data])
            df[0].to_csv('./reports/time_series_data_' + cls + '.csv',
                         index=False)

        def stitch_all_classes():
            files = glob.glob('./reports/*.csv')
            files.sort()
            df = []
            for file in files:
                base = os.path.basename(file).split('.')
                if base[0][0] == 't':
                    temp_df = pd.read_csv(file)
                    df.append(temp_df)

            final_df = pd.concat([df[0], df[1]])
            for i in range(2, len(df)):
                final_df = pd.concat([final_df, df[i]])

            os.system('rm ./reports/stitched_time_series_data.csv')

            final_df.to_csv('./reports/stitched_time_series_data.csv',
                            index=False)

        browser.get(
            'https://www.funtoot.com/funtoot/#/app/teacher/reports/curriculum-progress'
        )
        browser.implicitly_wait(8)
        time.sleep(10)

        for j in range(2, 6):
            # date = (datetime.datetime(2019, 5, 15, 15, 48, 10, 680809) + datetime.timedelta(days=0)).strftime('%d-%b-%Y')
            date = str(datetime.datetime.now().strftime('%d-%b-%Y'))
            print(date)
            browser.find_element_by_xpath(
                '//input[@placeholder = "To"]').clear()
            browser.find_element_by_xpath(
                '//input[@placeholder = "From"]').clear()
            ActionChains(browser).move_to_element(
                browser.find_element_by_xpath(
                    '//input[@placeholder = "To"]')).click().send_keys(
                        str(date)).perform()
            ActionChains(browser).move_to_element(
                browser.find_element_by_xpath(
                    '//input[@placeholder = "From"]')).click().send_keys(
                        str(date)).perform()
            browser.find_element_by_xpath(
                '//button[@class="btn btn-default ng-binding"]').click()
            time.sleep(10)
            select_class = browser.find_element_by_id('Select1')
            select = Select(select_class)
            select.select_by_index(j)
            time.sleep(10)
            print("to be downloaded")
            browser.find_element_by_xpath(
                "//download-report-btn/div/i").click()
            time.sleep(4)
            os.system('mv ' + str(j + 3) + 'AMathematicsreport.xlsx ' +
                      str(date) + '.xlsx')
            time.sleep(8)
            convert_xlsx_to_csv()
            os.system('rm *.xlsx')
            pre_process_data(str(j + 3))
            files = glob.glob('*.csv')
            for file in files:
                if file[0] != 'a':
                    os.system('rm ' + file)

            os.system('rm *.csv')
            if (j == 5):
                time.sleep(2)
                browser.quit()

        stitch_all_classes()

        print("done")
Example #16
0
class RMPDownload:
    def __init__(self, path):
        self.path_root = path
        self.driver_builder = DriverBuilder()
        download_path = self.path_root
        print("download_path=", download_path)
        self.driver = self.driver_builder.get_driver(download_path,
                                                     headless=True)

    def download(self, equipment):

        self.driver.get(
            "http://rmp.global.schindler.com/Equipment/EquipmentMain/EquipmentDetails/?sapSys=ZAP&equnr="
            + equipment)

        try:
            js = ''' document.querySelectorAll("li")[35].click();

                
            '''
            self.driver.execute_script(js)
        except:
            print("exception 1 ")

        sleep(5)

        try:
            js = ''' document.getElementById('ExportWithParameters1').click(); '''
            self.driver.execute_script(js)
        except:
            print("exception 2 ")

        self.wait_until_file_exists(equipment + "_MessagesExport_", 20)

        try:
            js = ''' document.querySelectorAll("li")[34].click();

 '''
            self.driver.execute_script(js)
        except:
            print("exception 3 ")

        sleep(5)

        try:
            js = ''' document.getElementById('EventExportButton').click(); '''
            self.driver.execute_script(js)
        except:
            print("exception 4 ")

        self.wait_until_file_exists(equipment + "_EventsExport_", 20)
        self.driver.close()

        print("done")

    def wait_until_file_exists(self, actual_file, wait_time_in_seconds=5):
        waits = 0

        while waits < wait_time_in_seconds:
            fileList = os.listdir(self.path_root)
            for file in fileList:
                print("file name=", file)
                if file.find(actual_file) >= 0:
                    return

            print("sleeping...." + str(waits))
            sleep(.5)  # make sure file completes downloading
            waits += .5

    def download_by_quip(self, equipment):
        print("testing download")

        fileList = os.listdir(self.path_root)
        for file in fileList:
            print("file name=", file)
            if file.find(equipment) >= 0:
                os.remove(self.path_root + file)

        self.download(equipment)
Example #17
0
from os import path, remove
import os
from time import sleep

from driver_builder import DriverBuilder



class TestDownload:
    def test_download(self):

driver_builder = DriverBuilder()

#download_path = path.dirname(path.realpath(__file__))
download_path = os.path.dirname(os.path.realpath('__file__'))

expected_download = path.join(download_path, "pybites_bite133.zip")

        # clean downloaded file
        try:
            remove(expected_download)
        except OSError:
            pass

        assert (not path.isfile(expected_download))

driver = driver_builder.get_driver(download_path, headless=True)

        #driver.get("https://www.thinkbroadband.com/download")
driver.get("https://codechalleng.es/bites/api/downloads/bites/138/")
def headless_chrome(download_default_directory):
    driver_builder = DriverBuilder()
    global driver
    driver = driver_builder.get_driver(download_default_directory,
                                       headless=True)