خلي الاسكربت دا يضغط علي المكان دا ف الاخر 
اهو ال xpath
/html/body/div[62]/div[3]
و اهو ال selector 
body > div.javascriptMaterialdesignGm3WizDialog-dialog.javascriptMaterialdesignGm3WizDialog-dialog--standard.javascriptMaterialdesignGm3WizDialog-dialog--use-old-tokens.textPromptDialogDialog.javascriptMaterialdesignGm3WizDialog-dialog--open > div.javascriptMaterialdesignGm3WizDialog-dialog__scrim
وبعديها هتاخد الاميلات اللي محطوطه ف ملف txt تحطها ف المكان اللي قدامك دا 
وملف ال txt دا اسمه list.txt 
وبعديهها خلي الاسكربت يعمل سلييب500 ثانيه ابعت الاسكربت كامل 
# %%
# Import necessary libraries
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import random
import time  # للاستبدال بـ WebDriverWait في بعض الحالات

# Function to print messages with colors
def print_message(message, color="\033[92m"):  # Green color
    print(f"{color}{message}\033[0m")

# إعداد خيارات Chrome لتحسين الأداء
chrome_options = Options()
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")  # تحسين الأداء
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-popup-blocking")
# chrome_options.add_argument("--headless")  # تشغيل بدون واجهة رسومية إذا كان ممكنًا

# تحسين أداء المتصفح عن طريق تعطيل تحميل الصور والميديا
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

# Initialize the Chrome WebDriver with the options
webdriver_service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=webdriver_service, options=chrome_options)

# تحديد وقت انتظار افتراضي أقصر
default_wait = 5  # بدلاً من 10 ثوانٍ

# Start of the script - Show welcome message
print_message("Starting the automation script...", "\033[96m")

# فتح صفحة تسجيل الدخول إلى جوجل
driver.get("https://accounts.google.com/signin/v2/identifier?service=mail")

# إدخال البريد الإلكتروني والنقر على "التالي"
email_input = WebDriverWait(driver, default_wait).until(
    EC.presence_of_element_located((By.ID, "identifierId"))
)
email_input.send_keys("dkowkdatoskaka@gmail.com")
driver.find_element(By.ID, "identifierNext").click()

# إدخال كلمة المرور والنقر على "التالي"
password_input = WebDriverWait(driver, default_wait).until(
    EC.presence_of_element_located((By.NAME, "password"))
)
password_input.send_keys("wdsawdsa325")
driver.find_element(By.ID, "passwordNext").click()

# الانتظار لظهور عنصر يشير إلى نجاح تسجيل الدخول
WebDriverWait(driver, default_wait).until(
    EC.presence_of_element_located((By.XPATH, '//a[contains(@href, "https://mail.google.com")]'))
)

# الانتقال إلى Google Docs
driver.get("https://docs.google.com/document/u/0/")

# الانتظار للتحميل والنقر على صورة الملف الشخصي أو أي عنصر آخر ضروري
# تحديث XPATH لاستخدام محددات أكثر فعالية إذا أمكن
try:
    profile_image = WebDriverWait(driver, default_wait).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, "img[aria-label*='Google Account']"))
    )
    profile_image.click()
except:
    print_message("Profile image not found or not clickable.", "\033[91m")

# الانتظار لظهور زر المشاركة والنقر عليه
try:
    share_button = WebDriverWait(driver, default_wait).until(
        EC.element_to_be_clicked((By.XPATH, '//button[@aria-label="Share"]'))
    )
    share_button.click()
except:
    print_message("Share button not found or not clickable.", "\033[91m")

# الانتظار لفتح مربع الحوار الخاص بالمشاركة
WebDriverWait(driver, default_wait).until(
    EC.presence_of_element_located((By.XPATH, '//div[@role="dialog"]'))
)

# قراءة قائمة الإيميلات من الملف
try:
    with open('list.txt', 'r') as file:
        emails = [line.strip() for line in file if line.strip()]
except FileNotFoundError:
    print_message("File 'list.txt' not found.", "\033[91m")
    driver.quit()

# العثور على حقل إدخال الإيميلات مرة واحدة خارج الحلقة
try:
    email_input_field = WebDriverWait(driver, default_wait).until(
        EC.presence_of_element_located((By.XPATH, '//input[@type="email"]'))
    )
except:
    print_message("Email input field not found.", "\033[91m")
    driver.quit()

# إدخال الإيميلات وإرسال الدعوات
for email in emails:
    email_input_field.clear()
    email_input_field.send_keys(email)
    email_input_field.send_keys(Keys.RETURN)
    # يمكن تقليل وقت الانتظار بين الإدخالات
    time.sleep(0.5)  # أو استخدم WebDriverWait بناءً على الحاجة

# النقر على زر "Send" أو "Share" حسب التصميم الحالي
try:
    send_button = WebDriverWait(driver, default_wait).until(
        EC.element_to_be_clickable((By.XPATH, '//button[contains(text(),"Send") or contains(text(),"Share")]'))
    )
    send_button.click()
    print_message("Invitations sent successfully.", "\033[92m")
except:
    print_message("Send/Share button not found or not clickable.", "\033[91m")

# إغلاق المتصفح بعد الانتهاء
driver.quit()