def record_related_documents(browser, abstract, document): related_documents_field = locate_element_by_class_name( browser, abstract.county.record["Related Documents"], "related documents", False, document) related_documents = list_to_string( related_documents_field.text.split('\n')[1:]) record_value(abstract, 'related documents', related_documents)
def check_for_error(browser, abstract, document, alt=None): error_message = locate_element_by_class_name( browser, abstract.county.classes["Error Message"], "search error message", document=document, quick=True) if error_message is not None: print( f'Located an error during processing of {document.extrapolate_value()}...' ) if error_message.text.startswith( abstract.county.messages["Error Message"]): print( f'An error occurred while handling document located at ' f'{document.extrapolate_value()}, refreshing the page to try again.' ) browser.refresh() naptime() return abstract.county.messages["Error Message"] else: print( 'Unable to determine how to handle error, please review and press enter to continue...' ) input() return abstract.county.messages["Error Message"] elif alt == 'search': return False else: print( 'No error appears to have occurred, please review and press enter to continue...' ) input() return abstract.county.messages["Error Message"]
def verify_login(browser, abstract): if browser.title == abstract.county.titles["Login"]: validation_errors = locate_element_by_class_name( browser, abstract.county.classes["Validation Error"], "validation errors") print(validation_errors.text) browser.quit() exit()
def record_indexing_information(abstract, document_table, document): recording_date_field = locate_element_by_class_name( document_table, abstract.county.classes["Recording Date"], "recording date", document=document) recording_date = date_from_string(recording_date_field.text[:10]) record_value(abstract, 'recording date', recording_date)
def center_purchase_button(browser, abstract, document): purchase_button = locate_element_by_class_name( browser, abstract.county.classes["Purchase Button"], "purchase button", clickable=True, document=document) center_element(browser, purchase_button)
def get_results(browser, abstract, document): search_results_table = locate_element_by_id( browser, abstract.county.ids["Search Results"], "search results table", document=document) # Need a separate function path if multiple results are returned return locate_element_by_class_name(search_results_table, abstract.county.classes["Results"], "search results", True, document)
def get_document_link(abstract, result, document): result_actions_list = locate_element_by_class_name( result, abstract.county.classes["Result Actions"], "search results actions list", document=document) return locate_elements_by_tag_name(result_actions_list, abstract.county.tags["Result Actions"], "search actions", document=document)[1]
def record_legal(browser, abstract, document): legal_field = locate_element_by_class_name(browser, abstract.county.record["Legal"], "legal", False, document) legal = list_to_string(legal_field.text.split('\n')[1:]) notes = access_notes(browser, abstract, document) if notes == '' or notes == ' ': record_value(abstract, 'legal', legal) else: record_value(abstract, 'legal', f'{notes}\n\n{legal}')
def validate_search(browser, abstract, document): if not assert_window_title(browser, abstract.county.titles["Search Results"]): print(f'Browser failed to successfully execute search for ' f'"{document.extrapolate_value()}", validating search...') error_message_element = locate_element_by_class_name(browser, abstract.county.classes["Validation"], "search results", document=document) if error_message_element.text.strip() == abstract.county.messages["Invalid Search"]: print(abstract.county.messages["Invalid Search"]) else: print('Unable to identify the issue, please review.') print(error_message_element.text.strip()) print('Please review and press enter to continue...') input()
def switch_into_frame(browser, abstract, document): try: pdf_viewer = locate_element_by_class_name( browser, abstract.county.classes["PDF Viewer"], "pdf viewer") if not pdf_viewer: return pdf_viewer center_purchase_button(browser, abstract, document) browser.switch_to.frame(pdf_viewer) return True except TimeoutException: print( "Browser timed out while trying to access the pdf viewer, refreshing the page to try again." ) return False
def switch_into_frame(browser, abstract, document): try: pdf_viewer = locate_element_by_class_name( browser, abstract.county.classes["PDF Viewer"], "pdf viewer") if not pdf_viewer: # print('Unable to locate PDF viewer, trying again.') # print(f'PDF Viewer: {pdf_viewer}') # print(f'Reception Number: {document.reception_number}') # print(f'Download Value: {document.download_value}') return pdf_viewer center_purchase_button(browser, abstract, document) browser.switch_to.frame(pdf_viewer) return True except TimeoutException: print( "Browser timed out while trying to access the pdf viewer, refreshing the page to try again." ) return False
def count_results(browser, document): result_count = locate_element_by_class_name(browser, number_results_class, "number results", document=document) if result_count.text == single_result_message: document.number_results += 1 elif result_count.text.endswith(multiple_results_message): document.number_results += int( result_count.text[:-len(multiple_results_message)]) print( f'{document.number_results} documents returned while searching {document.extrapolate_value()}.' ) else: print(f'Browser unable to determine results for ' f'{document.extrapolate_value()}, please review.') print("Please press enter after reviewing the search results...") input()
def count_results(browser, abstract, document): result_count = locate_element_by_class_name( browser, abstract.county.classes["Number Results"], "number results", document=document) if result_count.text == abstract.county.messages["Single Result"]: document.number_results = 1 elif result_count.text.endswith( abstract.county.messages["Multiple Results"]): document.number_results += int( result_count. text[:-len(abstract.county.messages["Multiple Results"])]) print( f'{document.number_results} documents returned while searching {document.extrapolate_value()}.' ) else: print(f'Browser unable to determine results for ' f'{document.extrapolate_value()}, please review.') print("Please press enter after reviewing the search results...") input()
def record_document_type(browser, abstract, document): document_type_field = locate_element_by_class_name( browser, abstract.county.record["Document Type"], "document type", False, document) record_value(abstract, 'document type', document_type_field.text.title())
def access_result_button(abstract, result, document=None): result_button = locate_element_by_class_name( result, abstract.county.buttons["Open Document"], "result button", True, document) return result_button.get_attribute("href")
def validate_search(browser, abstract, document): return (abstract.county.messages["Invalid Search"] != locate_element_by_class_name(browser, abstract.county.classes["Validation"], "search validation message", document=document))
def get_next_result_button(browser, abstract, document): result_buttons = locate_element_by_class_name( browser, abstract.county.classes["Result Buttons"], "result buttons", False, document) return result_buttons.find_elements_by_tag_name( abstract.county.tags["Result Button"])[1]
def verify_results_loaded(browser, abstract, document): no_results_element = locate_element_by_class_name(browser, abstract.county.classes["No Results"], "no results", document=document, quick=True) if no_results_element is None: return True