def __report(self, friends): logger = Logger.get_logger() logger.info("Reporting.") reporter = Reporter() if Config.reporter.console_report: reporter.add_console_handler() if Config.reporter.file_report: reporter.add_file_handler(Config.reporter.report_file_path, Config.reporter.report_file_extension) reporter.report(friends)
def __initialize(self): Config.initialize() config_parser = INIConfigurationParser(DEFAULT_CONFIG) self.parse_command_line_arguments(config_parser) config_parser.parse_config() Logger.setup(LOG_FORMAT, Config.logger.log_level, Config.logger.console_log, Config.logger.file_log, Config.logger.log_file_path, Config.logger.log_file_extension) logger = Logger.get_logger() logger.info("Logger successfully set up.") logger.info("Creating web driver.") chrome_options = Options() if Config.general.headless: chrome_options.add_argument("--headless") driver = webdriver.Chrome(chrome_options=chrome_options) return driver
def main(): """ This is the main script to convert a ArcMap-Project""" export_name = arcpy.GetParameterAsText(0) if not export_name: export_name = "C:\\temp\\test.qgs" if export_name.endswith(".qgs") or export_name.endswith(".qgz"): export_name_short = export_name[:-4] else: export_name_short = export_name qgs_file_name = u"{}.qgs".format(export_name_short) qgs_file = codecs.open(qgs_file_name, "w", encoding="utf-8") logging = Logger.get_logger(export_name_short) xml_document = Document() arcpy.AddMessage("Scanning Project and collecting Layer-Information") # take Infos from opened ArcMap-Project -> to access the arcObjects arc_app = CreateObject(ArcGisModules.module_framework.AppROT, interface=ArcGisModules.module_framework.IAppROT) arc_doc = change_interface( arc_app.Item(0).Document, ArcGisModules.module_map_ui.IMxDocument) arc_doc_info = change_interface(arc_doc, ArcGisModules.module_carto.IDocumentInfo2) header = create_header(xml_document, arc_doc_info) if not arc_doc.ActiveView.IsMapActivated: arc_doc.ActiveView = arc_doc.FocusMap project_path = "" try: project_path = os.path.dirname(arc_doc_info.Folder) except TypeError: print "There is no ArcMap-Project open - Will Crash!" arcpy.env.workspace = project_path arcpy.env.overwriteOutput = True # this is the arcpy connection to the document mxd_path = os.path.join(arc_doc_info.Path) mxd = arcpy.mapping.MapDocument(mxd_path) print 'Start Writing' for counter, dataframe in enumerate(arcpy.mapping.ListDataFrames(mxd)): if counter == 0: print 'Creating MapSpatialReferenceSystem.' MapSpatialReferenceSystem.create_map_srs_element( xml_document, header, dataframe) arc_dataframe = arc_doc.Maps.Item[counter] layer_list = arcpy.mapping.ListLayers(dataframe) arcpy.AddMessage("{} Layers are in the Dataframe".format( str(len(layer_list)))) ProjectLayers.create_project_layers_element(xml_document, header, layer_list, arc_dataframe) broken_layer_list = brokenLayers.BrokenLayers.broken_layer_list for broken_layer in broken_layer_list: if broken_layer in layer_list: layer_list.remove(broken_layer) MapLegend.create_map_legend_element(xml_document, header, layer_list, dataframe) LayerTree.create_layertree(xml_document, header, layer_list, dataframe) MapProperties.create_map_properties_element(xml_document, header) if len(arcpy.mapping.ListDataFrames(mxd)) > 1: VisibilityPresets.initialize_visibility(xml_document, header, mxd) arcpy.AddMessage("Creating Layout") logging.info("Creating Layout") layout = Layout(xml_document, header, arc_doc, mxd).create_layout() arcpy.AddMessage("Creating Metadata") Metadata.create_metadata(xml_document, header, arc_app) try: xml_document.writexml(qgs_file, indent=" ", addindent=" ", newl="\n", encoding="UTF-8") arcpy.AddMessage("Project saved!") arcpy.AddMessage('QGIS-File written') finally: qgs_file.close() if export_name.endswith(".qgz"): qgd_file_name = u"{}.qgd".format(export_name_short) qgd_file = open(qgd_file_name, "w") qgd_file.close() with ZipFile(u"{}.qgz".format(export_name_short), "w") as newzip: newzip.write(qgs_file_name, os.path.basename(qgs_file.name)) newzip.write(qgd_file_name, os.path.basename(qgd_file.name)) arcpy.AddMessage(' and zipped.') try: os.remove(qgs_file_name) os.remove(qgd_file_name) except OSError as e: print("Error: %s - %s." % (e.filename, e.strerror))
def __execute(self, driver): logger = Logger.get_logger() seleniumUtils = SeleniumUtils(logger, driver) logger.info(f"Opening {URL}.") try: driver.get(URL) except WebDriverException: logger.exception("Cannot navigate to invalid url.") exit(ERROR_CANNOT_NAVIGATE_TO_INVALID_URL) driver.maximize_window() logger.info("Waiting for email field to be clickable.") email_field = seleniumUtils.get_clickable_element( Config.general.element_wait_time, By.ID, ELEMENT_EMAIL_ID) logger.info("Writing email.") email_field.send_keys(Config.general.login) logger.info("Waiting for password field to be clickable.") password_field = seleniumUtils.get_clickable_element( Config.general.element_wait_time, By.ID, ELEMENT_PASSWORD_ID) logger.info("Writing password.") password_field.send_keys(Config.general.password) logger.info("Waiting for login button to be clickable.") submit_login_button = seleniumUtils.get_clickable_element( Config.general.element_wait_time, By.ID, ELEMENT_LOGIN_BUTTON_ID) logger.info("Clicking login button.") submit_login_button.click() logger.info("Closing popup.") webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform() logger.info("Waiting for profile to be clickable.") profile = seleniumUtils.get_clickable_element( Config.general.element_wait_time, By.CSS_SELECTOR, ELEMENT_PROFILE_SELECTOR) logger.info("Clicking profile.") profile.click() logger.info("Waiting for friends tab to be clickable.") friends_tab = seleniumUtils.get_clickable_element( Config.general.element_wait_time, By.CSS_SELECTOR, ELEMENT_FRIENDS_TAB_SELECTOR) logger.info("Clicking friends tab.") friends_tab.click() logger.info("Counting friends.") friends_count_element = seleniumUtils.get_not_empty_text_element( Config.general.element_wait_time, By.XPATH, ELEMENT_FRIENDS_COUNT_XPATH) friends_count = int(friends_count_element.text) logger.info(f"You have {friends_count} friends.") friends = dict() if friends_count > 0: logger.info("Getting friends names and links.") friends_elements = seleniumUtils.get_all_elements( Config.general.element_wait_time, By.CSS_SELECTOR, ELEMENT_FRIENDS_SELECTOR) for friend in friends_elements: friends[friend.get_attribute('href')] = friend.text return friends
def __finish(self, driver): logger = Logger.get_logger() logger.info("Finishing Selenium test.") logger.info("Closing driver.") driver.close()
def add_file_handler(self, file_path, file_extension): file_string = file_path + str(datetime.now()).replace( ':', '-') + file_extension file_service = FileService(Logger.get_logger(), file_string, 'w') file_handler = Handler(file_service.write) self.__handlers.append(file_handler)