![2](https://private-user-images.githubusercontent.com/152691314/309542230-c6cd2291-38ef-4727-87b6-d045c97961a5.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEwNTMzNzgsIm5iZiI6MTcyMTA1MzA3OCwicGF0aCI6Ii8xNTI2OTEzMTQvMzA5NTQyMjMwLWM2Y2QyMjkxLTM4ZWYtNDcyNy04N2I2LWQwNDVjOTc5NjFhNS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcxNVQxNDE3NThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02MWJiYTUxM2Y1MDRkYzFlYTZmNTExODk5NmU4Y2VmNTBhYmM4NTFlMzQzM2MzYTBjODIzMTVkMGJjZjczOTg3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.AdzqAjSOeYiEj1PIlfHXsNkDOWa758D7gGhBdD431pQ)
![1](https://private-user-images.githubusercontent.com/152691314/309542219-66157871-0f94-4053-a62a-35eff079e29e.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEwNTMzNzgsIm5iZiI6MTcyMTA1MzA3OCwicGF0aCI6Ii8xNTI2OTEzMTQvMzA5NTQyMjE5LTY2MTU3ODcxLTBmOTQtNDA1My1hNjJhLTM1ZWZmMDc5ZTI5ZS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcxNVQxNDE3NThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jZDkwN2ZlODE4NjYzN2EzYTVlMTM2YmMyZjI1N2UzNTc0MmZjYTZmYWEwOGE5YmZiMGU5ZmNjZTQxMGE1OTE1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.OIKpErpw1kgzLh06aHP2Is6BHVOykkB6mmMVNZRhaYw)
get error message when try to login
https://visa.vfsglobal.com/gbr/en/mlt/login
after add email and password
going to solve the g-captcha
after solve and be true
click on sign in button get this error
"Mandatory field cannot be left empty"
how to fix that
https://www.mediafire.com/file/42uup2lpml1j9v2/Before__Connexion_VFS_Global.html/file
https://www.mediafire.com/file/j33azoraavxxwrw/After_Connexion_VFS_Global.html/file
Function to handle Google Captcha
def Captcha(sb, excel_file_path):
# Check for Google Captcha element
sb.driver.switch_to.default_content()
if sb.is_element_present('//*[@id="g-recaptcha-response"]'):
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.LIGHTWHITE_EX + f"{current_time} - Google Captcha element found")
wait_recaptcha_to_be_solved(sb, excel_file_path)
else:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.YELLOW + f"{current_time} - Google Captcha element not found. Continuing...")
sb.driver.switch_to.default_content()
# Add any further actions or conditions here if needed
def wait_recaptcha_to_be_solved(sb, excel_file_path):
try:
sb.is_element_present('iframe[title="reCAPTCHA"]')
except:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.BLACK + f"{current_time} - ERROR: WE CANNOT SWITCH TO RECAPTCHA IFRAME")
else:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.GREEN + f"{current_time} - NOTE: PRESENCE OF RECAPTCHA")
sb.driver.uc_switch_to_frame("iframe")
print(colorama.Fore.YELLOW + f"{current_time} - WAITING FOR RECAPTCHA TO BE SOLVED...")
for i in range(100):
try:
recaptcha = sb.is_element_present('#recaptcha-anchor[aria-checked="true"]')
except:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.BLUE + f"{current_time} - WARNING: WAITING FOR RECAPTCHA TO BE SOLVED {100-i}...")
sleep(5)
else:
if recaptcha: # Checking if recaptcha is True
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.MAGENTA + f"{current_time} - NOTE: RECAPTCHA HAS BEEN SOLVED")
sb.driver.switch_to.default_content()
return True
else:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.CYAN + f"{current_time} - WARNING: WAITING FOR RECAPTCHA TO BE SOLVED {100-i}...")
sleep(5)
sb.driver.switch_to.default_content()
return False
Cookies Button
def remove_destraction(sb, excel_file_path):
destractions = 0
if destractions != 0:
return
try:
sb.click('//[@id="onetrust-close-btn-container"]/button')
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.BLUE + f"{current_time} - Cookies Click Button")
except:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.BLUE + f"{current_time} - NOTE: NO DESTRACTION THERE")
else:
sb.click('//[@id="onetrust-close-btn-container"]/button')
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.WHITE + f"{current_time} - NOTE: DESTRACTION HAS BEEN REMVOED")
destractions = 1
return True
FILL EMAIL AND PASSWORD LOGIN PAGE
def login(sb, excel_file_path):
check_notification(sb, excel_file_path)
CloudFlare = '/html/body/app-root/div/div/app-login/section/div/div/mat-card/form/app-cloudflare-captcha-container/div'
if sb.is_element_present(CloudFlare):
sb.highlight(CloudFlare)
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.WHITE + f"{current_time} - CloudFlare Captcha Found")
else:
current_time = datetime.now().strftime("%I:%M:%S %p")
print(colorama.Fore.YELLOW + f"{current_time} - CloudFlare Captcha not found.")
check_notification(sb, excel_file_path)
# Search For Email Place and import
sb.press_keys("#mat-input-0", str(email))
print(colorama.Fore.RED + f"{current_time} - Email Added")
sleep(1)
# Find the password input field and enter the password
sb.press_keys("#mat-input-1", str(password))
print(colorama.Fore.WHITE + f"{current_time} - Password Added")
sleep(1)
sb.driver.uc_switch_to_frame("iframe")
if sb.is_element_present("#challenge-stage"):
sleep(1)
sb.driver.switch_to.default_content()
submit_button_CloudFlare(sb, excel_file_path)
else:
sb.driver.switch_to.default_content()
sleep(1)
if sb.is_element_present('iframe[title="reCAPTCHA"]'):
sleep(1)
sb.driver.switch_to.default_content()
submit_button_Gcaptcha(sb, excel_file_path)
def submit_button_CloudFlare(sb, excel_file_path):
try:
sb.click('body > app-root > div > div > app-login > section > div > div > mat-card > form > button')
current_time = datetime.now().strftime("%I:%M:%S %p") # Update current_time
print(colorama.Fore.MAGENTA + f"{current_time} - Sign In (Button) click")
check_notification(sb, excel_file_path)
except:
print(colorama.Fore.MAGENTA + f"{current_time} - ERROR: WE CANNOT FIND THE SUBMIT BUTTON ")
# Check for the error message
if sb.is_text_visible("body > app-root > div > div > app-login > section > div > div > mat-card > form > div.errorMessage.ng-star-inserted > div"):
current_time = datetime.now().strftime("%I:%M:%S %p") # Update current_time
print(colorama.Fore.WHITE + f"{current_time} - 'Mandatory field cannot be left blank' error detected. Restarting the process.")
sb.driver.quit() # Close the browser
main_process()
else:
pass
click_new_booking(sb, excel_file_path)
sleep(2)
return True
def submit_button_Gcaptcha(sb, excel_file_path):
sleep(1)
try:
submit_button = sb.driver.uc_click('.mat-focus-indicator.btn.mat-btn-lg.btn-block.btn-brand-orange.mat-stroked-button.mat-button-base.ng-star-inserted'.replace(" ","."))
print("Notice: SUBMIT BUTTON Clicked")
except Exception as e:
print(f"ERROR: {e}")
return False
if submit_button is not None:
if len(submit_button) > 0: # Check if the list is not empty
try:
submit_button[0].click()
except Exception as e:
print(f"ERROR: {e}")
return False
else:
print("ERROR: SUBMIT BUTTON LIST IS EMPTY")
return False
else:
print("ERROR: SUBMIT BUTTON NOT FOUND")
return False
# Check for the error message
if sb.is_text_visible("Mandatory field cannot be left empty"):
print("Mandatory field cannot be left empty")
return False
return True
try:
sb.click('.mat-focus-indicator.btn.mat-btn-lg.btn-block.btn-brand-orange.mat-stroked-button.mat-button-base.ng-star-inserted'.replace(" ","."))
current_time = datetime.now().strftime("%I:%M:%S %p") # Update current_time
print(colorama.Fore.MAGENTA + f"{current_time} - Sign In (Button) click")
check_notification(sb, excel_file_path)
except:
print(colorama.Fore.MAGENTA + f"{current_time} - ERROR: WE CANNOT FIND THE SUBMIT BUTTON ")
# Check for the error message
if sb.is_text_visible("body > app-root > div > div > app-login > section > div > div > mat-card > form > div.errorMessage.ng-star-inserted > div"):
current_time = datetime.now().strftime("%I:%M:%S %p") # Update current_time
print(colorama.Fore.WHITE + f"{current_time} - 'Mandatory field cannot be left blank' error detected. Restarting the process.")
sb.driver.quit() # Close the browser
main_process()
else:
pass
click_new_booking(sb, excel_file_path)
sleep(2)
return True