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 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
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
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)
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()
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()
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)
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
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")
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)
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)