This is my code , it is in a loop. It worked many times then stopped and showed an error. After running the code multiple times still the same. My chrome version is (97.0.4692.99) so I downloaded the newest versions of ChromeDriver(97.0.4692.71) but unfortunately still the same issue , please help me ✋
from selenium import webdriver
import pyscreenshot as ImageGrab
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.webdriver.support.ui import WebDriverWait
import smtplib
import os
from selenium.common.exceptions import NoSuchElementException
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
#################################################################################^import
def Riyadh_city():
while True:
def warn(*args, **kwargs):
pass
import warnings
warnings.warn = warn
city_name = "Riyadh"
city_name_in_prometric = "Akaria"
country = ", Saudi Arabia"
date11 = "03/17/2022"
date22 = "03/19/2022"
options = webdriver.ChromeOptions()
options.add_argument("--incognito")
path = ('chromedriver.exe')
driver = webdriver.Chrome(path)
driver.get('https://proscheduler.prometric.com/home')
driver.maximize_window()
time.sleep(5)
try: # schudle
saudi = WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.CSS_SELECTOR,
"body > app-root > home > div.container.body-wrpr.height-auto > div:nth-child(3) > a:nth-child(1) > img")))
saudi.click()
except NoSuchElementException:
driver.quit()
try:
time.sleep(3)
driver.find_element_by_xpath("/html/body/app-root/app-scheduling/div/div[1]/app-reschedule-appointment/app-reschedule/div/div[2]/app-appointment-filter/div/div/app-appointment-lookup-form/form/div[2]/div[1]/div[1]/div/div[1]/input").send_keys("87000")
driver.find_element_by_xpath("/html/body/app-root/app-scheduling/div/div[1]/app-reschedule-appointment/app-reschedule/div/div[2]/app-appointment-filter/div/div/app-appointment-lookup-form/form/div[2]/div[2]/div/div/div[1]/input").send_keys("alga")
time.sleep(3)
element = driver.find_element_by_id("submitBtn")
driver.execute_script("arguments[0].click();", element)
except NoSuchElementException:
saudi.click()
try:
time.sleep(10)
element = driver.find_element_by_id("nextBtn")
driver.execute_script("arguments[0].click();", element)
except NoSuchElementException:
saudi = WebDriverWait(driver, 600).until(EC.presence_of_element_located((By.CSS_SELECTOR, "button#nextBtn")))
saudi.click()
try:
saudii = WebDriverWait(driver, 60).until(
EC.element_to_be_clickable((By.XPATH, "//*[@id='google-maps']/div/app-geo-locator/input")))
saudii.click()
saudii.send_keys(city_name+country)
except NoSuchElementException:
driver.quit()
date11 = "03/16/2022"
date22 = "03/27/2022"
date1 = driver.find_element_by_xpath(
"/html/body/app-root/app-scheduling/div/div[1]/app-reschedule-appointment/app-reschedule-location/div/app-location-selector/div/div[3]/div[1]/label/datepicker-demo/div/input")
date1.send_keys(date11)
time.sleep(5)
date2 = driver.find_element_by_xpath(
"/html/body/app-root/app-scheduling/div/div[1]/app-reschedule-appointment/app-reschedule-location/div/app-location-selector/div/div[3]/div[2]/label[1]/datepicker-demo/div/input")
date2.clear()
time.sleep(5)
date2.send_keys(date22)
try:
time.sleep(10)
element = driver.find_element_by_id("nextBtn")
driver.execute_script("arguments[0].click();", element)
time.sleep(10)
except NoSuchElementException:
saudi = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "button#nextBtn")))
saudi.click()
time.sleep(10)
driver.execute_script("window.scrollBy(0,270)", "")
time.sleep(3)
NoSeats = "No availability found. Please select a new location or date range above."
if NoSeats in driver.page_source:
print("باقي مافتح التسجيل .. riyadh")
driver.quit()
elif city_name_in_prometric in driver.page_source:
# im1 = pyautogui.screenshot(region=(22, 117, 540, 492))
# im1.save(r"C:\Users\Administrator\Desktop\Votebot\screenshot.png")
im = ImageGrab.grab(bbox=(22, 117, 540, 492))
im.save("screenshot.png")
print("FOUND SEATS in riyadh")
# pyautogui.press()
ImgFileName = "screenshot.png"
with open(ImgFileName, 'rb') as f:
img_data = f.read()
msg = MIMEMultipart()
msg['Subject'] = city_name + ' فتحت المقاعد في '
msg['From'] = 'rakan@gmail.com'
msg['To'] = 'rakan@gmail.com'
text = MIMEText("From " + date11 + " to " + date22)
msg.attach(text)
image = MIMEImage(img_data, name=os.path.basename(ImgFileName))
msg.attach(image)
mail = smtplib.SMTP("smtp.gmail.com", 587)
mail.ehlo()
mail.starttls()
mail.ehlo()
mail.login(MAIL, PASS)
mail.sendmail(FROM, TO, msg.as_string())
mail.close()
driver.quit()
else:
print("other city, it's NOT " + city_name_in_prometric)
Riyadh_city()
and this is the error :
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/Votebot/RESCHUDAL.py", line 122, in <module>
Riyadh_city()
File "C:/Users/Administrator/Desktop/Votebot/RESCHUDAL.py", line 58, in Riyadh_city
EC.element_to_be_clickable((By.XPATH, "//*[@id='google-maps']/div/app-geo-locator/input")))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\support\wait.py", line 89, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Stacktrace:
Backtrace:
Ordinal0 [0x010BFDC3+2555331]
Ordinal0 [0x010577F1+2127857]
Ordinal0 [0x00F52E08+1060360]
Ordinal0 [0x00F7E49E+1238174]
Ordinal0 [0x00F7E69B+1238683]
Ordinal0 [0x00FA9252+1413714]
Ordinal0 [0x00F97B54+1342292]
Ordinal0 [0x00FA75FA+1406458]
Ordinal0 [0x00F97976+1341814]
Ordinal0 [0x00F736B6+1193654]
Ordinal0 [0x00F74546+1197382]
GetHandleVerifier [0x01259622+1619522]
GetHandleVerifier [0x0130882C+2336844]
GetHandleVerifier [0x011523E1+541697]
GetHandleVerifier [0x01151443+537699]
Ordinal0 [0x0105D18E+2150798]
Ordinal0 [0x01061518+2168088]
Ordinal0 [0x01061660+2168416]
Ordinal0 [0x0106B330+2208560]
BaseThreadInitThunk [0x76EC0419+25]
RtlGetAppContainerNamedObjectPath [0x77DB74ED+237]
RtlGetAppContainerNamedObjectPath [0x77DB74BD+189]