def test_get_request_respond_time(site, failure_dict, header): """ Check how much second it take the website to respond to get request. if there is a problem try again up to the maximum tries(TRIES_BEFORE_FAILURE). When reach to the maximum tries will change in the failure dictionary the LoadTimeError status to true and add the time its took the website to respond. """ failure_counter = 0 failure_status = True while failure_counter < TRIES_BEFORE_FAILURE and failure_status: start = time.time() try: request = requests.get(site, headers=header) except: return end = time.time() if end - start > GET_REQUEST_MAX_WAIT_SECONDS: failure_counter += 1 print( PRINT_TO_CONSOLE_TOO_MUCH_TIME_TO_LOAD_MSG.format( site, str(end - start)[0:4], failure_counter)) if failure_counter >= TRIES_BEFORE_FAILURE: failure_dict["LoadTimeError"][0] = True failure_dict["LoadTimeError"][ 1] = TOO_MUCH_TIME_TO_LOAD_MSG.format( str(end - start)[0:4]) else: failure_status = False continue customFunc.sleep(SECONDS_TO_WAIT_BETWEEN_TRIES)
def test_get_request(site, failure_dict, header): """ Send get request to the site and check to status code and the connection. if there is a problem try again up to the maximum tries(TRIES_BEFORE_FAILURE). When reach to the maximum tries will change in the failure dictionary the suitable error status to true and add the corresponding error message. """ failure_counter = 0 failure_status = True while failure_counter < TRIES_BEFORE_FAILURE and failure_status: try: request = requests.get(site, headers=header) if request.status_code == GET_REQUEST_OK_CODE: failure_status = False continue else: failure_counter += 1 print( PRINT_TO_CONSOLE_CODE_ERROR_FAIL_MSG.format( site, request.status_code, failure_counter)) if failure_counter >= TRIES_BEFORE_FAILURE: failure_dict['CodeError'][0] = True failure_dict['CodeError'][ 1] = GET_REQUEST_CODE_ERROR_MSG.format( str(request.status_code)) except ConnectionError: failure_counter += 1 print( PRINT_TO_CONSOLE_CONNECTION_ERROR_FAIL_MSG.format( site, failure_counter)) if failure_counter >= TRIES_BEFORE_FAILURE: failure_dict["ConnectionError"][0] = True failure_dict["ConnectionError"][1] = CONNECTION_ERROR_MSG customFunc.sleep(SECONDS_TO_WAIT_BETWEEN_TRIES)
def test_run(): service = customFunc.auth.get_service_gmail() for site in site_list: header = random.choice(header_list) failure_dict = { "CodeError": [False, ''], "ConnectionError": [False, ''], "LoadTimeError": [False, ''], "FamiliarWordError": [False, ''], "GibberishError": [False, ''] } test_get_request(site, failure_dict, header) test_get_request_respond_time(site, failure_dict, header) test_familiar_word_and_gibberish(site, failure_dict, header) send_emails_on_failure(site, failure_dict, header, service) customFunc.sleep(1)
import customFunc site = "https://etgar22.co.il/?utm_source=test&utm_medium=test&utm_campaign=test" sheet = "אתגר 22 מבוגרים - 2019 (Responses)" sheet1 = "אתגר 22 - טלפניות (Responses)" session = customFunc.webFunc(site) session.start_driver() session.url() customFunc.sleep(6) session.insert_info_to_field('FirstName', session.first_name) session.insert_info_to_field('LastName', session.last_name) session.insert_info_to_field('Email', session.email) session.insert_info_to_field('Phone', session.phone) session.etgarconfirm() session.send() session.driver.quit() customFunc.sleep(600) session.check_in_sheets(sheet) session.check_in_sheets(sheet1)
fish = "https://animals-now.org/investigations/fish/?utm_source=test&utm_medium=test&utm_campaign=test" zoglobek = "https://animals-now.org/issues/zoglobek-lawsuit/?utm_source=test&utm_medium=test&utm_campaign=test" stop_cages = "https://animals-now.org/issues/stop-cages/?utm_source=test&utm_medium=test&utm_campaign=test" spetember_2020 = "https://animals-now.org/investigations/investigation-september-2020/?utm_source=test&utm_medium=test&utm_campaign=test" site_list = [ turkey, cages, fish, zoglobek, protection_act, live_transports, stop_cages ] email_list = [] # list with the email used to signed up petitions_list = [] # list with link to petition that the bot signed up for site in site_list: # sign up to petitions in the site list, for each sign up generate new info session = customFunc.webFunc(site) session.start_driver() session.url() # close_popup(session.driver, site) customFunc.sleep(6) print('petition url: "{}"'.format(site)) session.add_my_name_to_petition() # DELETE WHEN A/B THE IS DONE customFunc.sleep(3) session.insert_info_to_field('FirstName', session.first_name) session.insert_info_to_field('LastName', session.last_name) session.insert_info_to_field('Email', session.email) session.insert_info_to_field('Phone', session.phone) # session.insert_info_to_field('Birthday', session.year_of_birth_idx) session.petitions_age() session.petitions_send() email_list.append(session.email) petitions_list.append(site) session.driver.quit() customFunc.sleep(3)
import customFunc import Setup UTM_TEST = Setup.UTM_TEST site = "https://challenge22.com/?utm_source=test&utm_medium=test&utm_campaign=test&test={}".format( UTM_TEST) sheet = "הרשמה לאתגר 22 - ENGLISH NEW " session = customFunc.webFunc(site) session.start_driver() session.url() customFunc.sleep(10) session.insert_info_to_field('FullName', session.first_name + ' ' + session.last_name) session.insert_info_to_field('Email', session.email) session.ch_confirm_sixteen() customFunc.sleep(5) session.send() customFunc.sleep(10) session.transferred_to_thank_you_page() session.driver.quit() customFunc.sleep(600) session.check_in_sheets(sheet)
customFunc.emailfunc.web_error_email( 'ConnectionError', service, 'get request sent but the website does not respond', site, str(header)) continue end = time.time() if end - start > 30: error = 'too much time to load - : ' + str(end - start)[0:4] + ' seconds' customFunc.emailfunc.web_error_email('LoadTimeError', service, error, site, str(header)) else: customFunc.emailfunc.reset_error_counter('LoadTimeError', service, site) customFunc.sleep(5) page = request.text # get the page source code # Second test search for familiar words in the page, if not found - Fail. if 'animals' not in page: customFunc.emailfunc.web_error_email( 'FamiliarWordError', service, 'The word "animals" does not found in the page source', site, str(header)) else: customFunc.emailfunc.reset_error_counter('FamiliarWordError', service, site) # Third test search for character that always appear in gibberish text, if found - Fail if '×' in page: customFunc.emailfunc.web_error_email(