استخرج من السكربت الطريقه المستخدمه في فتح المتصفح 
import os
import random
import string
import time
import shutil
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui
import getpass

# دالة لتوليد اسم عشوائي
def generate_random_name(length=8):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

# طلب عدد البروفايلات من المستخدم
try:
    num_profiles = int(input("كم عدد البروفايلات التي ترغب في فتحها؟ "))
except ValueError:
    print("يرجى إدخال رقم صحيح.")
    exit()

# تحديد بيانات تسجيل الدخول (غير مستخدمة في السكربت الحالي، يمكنك حذفها إذا لم تكن ضرورية)
email = input("أدخل البريد الإلكتروني: ")
password = getpass.getpass("أدخل كلمة المرور: ")

# URL لصفحة إعدادات البروفايلات في Edge
SETTINGS_URL = "edge://settings/profiles"

# XPath و CSS Selector لزر "Add Profile"
ADD_PROFILE_XPATH = '//*[@id="section_yourProfile"]/div[1]/button/span'
ADD_PROFILE_CSS_SELECTOR = '#section_yourProfile > div.c01297.c01304 > button > span'

# XPath و CSS Selector لزر "Add" بعد النقر على "Add Profile"
CONFIRM_ADD_XPATH = '//*[@id="modal-root"]/div/div/div/div[2]/div/div[2]/div/div[2]/button[1]/span'
CONFIRM_ADD_CSS_SELECTOR = '#modal-root > div > div > div > div.c01657.c01709 > div > div.c01637 > div > div.c01692 > button.c01695.c01634.c01696 > span'

# XPath و CSS Selector لزر "Sign out"
SIGN_OUT_XPATH = '//*[@id="currentProfileCardActionButton"]/span'
SIGN_OUT_CSS_SELECTOR = '#currentProfileCardActionButton > span'

# إحداثيات للنقر بعد الخطوات السابقة
EXTRA_CLICKS = [
    (580, 88),  # الإحداثيات الأولى
    (170, 259)   # الإحداثيات الثانية
]

# قائمة لتخزين مثيلات المتصفح المفتوحة
drivers = []

for i in range(num_profiles):
    print(f"\nفتح البروفايل رقم {i+1} من {num_profiles}...")
    
    # توليد اسم بروفايل عشوائي
    random_profile_name = generate_random_name()

    # إنشاء مسار لمجلد البروفايل الجديد
    profile_path = os.path.join(os.getcwd(), f"profile_{random_profile_name}")
    if os.path.exists(profile_path):
        shutil.rmtree(profile_path)
    os.makedirs(profile_path, exist_ok=True)

    # إعداد خيارات Edge مع مسار بيانات المستخدم الجديد
    edge_options = Options()
    edge_options.use_chromium = True
    edge_options.add_argument(f'--user-data-dir={profile_path}')
    edge_options.add_argument('--window-size=1200,800')  # ضبط حجم النافذة لتناسب نقرتك
    edge_options.add_argument('--window-position=0,0')    # ضبط موقع النافذة

    # تعطيل المزامنة وأتمتة المتصفح
    edge_options.add_experimental_option("excludeSwitches", ['enable-automation'])
    edge_options.add_experimental_option('useAutomationExtension', False)

    # **اختياري: تحديد مسار msedge.exe إذا لم يكن في PATH**
    # edge_options.binary_location = "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"

    # إنشاء مثيل المتصفح مع الخيارات المحددة
    try:
        driver = webdriver.Edge(options=edge_options)
    except Exception as e:
        print(f"حدث خطأ أثناء فتح المتصفح: {e}")
        continue

    # إضافة المثيل إلى القائمة للحفاظ عليه مفتوحًا
    drivers.append(driver)

    # الانتظار لضمان أن المتصفح قد تم فتحه بشكل كامل
    time.sleep(5)  # زيادة الوقت لضمان تحميل المتصفح بشكل كامل

    # جعل نافذة المتصفح في الأمام لضمان أن Selenium يمكنه التحكم فيها
    try:
        driver.switch_to.window(driver.window_handles[-1])
    except Exception as e:
        print(f"حدث خطأ أثناء تبديل النافذة: {e}")

    # توجيه المتصفح إلى صفحة الإعدادات
    try:
        driver.get(SETTINGS_URL)
        print(f"تم توجيه المتصفح إلى {SETTINGS_URL}")
    except Exception as e:
        print(f"حدث خطأ أثناء التوجيه إلى {SETTINGS_URL}: {e}")
        continue

    # الانتظار حتى يتم تحميل الصفحة والعنصر المطلوب متاح
    try:
        wait = WebDriverWait(driver, 30)  # الانتظار حتى 30 ثانية
        # الانتظار حتى يكون زر "Add Profile" قابلًا للنقر
        add_profile_button = wait.until(
            EC.element_to_be_clickable((By.XPATH, ADD_PROFILE_XPATH))
            # يمكنك استخدام CSS Selector بدلًا من XPath إذا لزم الأمر:
            # EC.element_to_be_clickable((By.CSS_SELECTOR, ADD_PROFILE_CSS_SELECTOR))
        )
        # النقر على زر "Add Profile"
        add_profile_button.click()
        print("تم النقر على زر 'Add Profile' بنجاح.")
    except Exception as e:
        print(f"حدث خطأ أثناء النقر على زر 'Add Profile': {e}")
        continue

    # الانتظار حتى يتم تحميل زر "Add" وتكون قابلة للنقر
    try:
        confirm_add_button = wait.until(
            EC.element_to_be_clickable((By.XPATH, CONFIRM_ADD_XPATH))
            # يمكنك استخدام CSS Selector بدلًا من XPath إذا لزم الأمر:
            # EC.element_to_be_clickable((By.CSS_SELECTOR, CONFIRM_ADD_CSS_SELECTOR))
        )
        # النقر على زر "Add"
        confirm_add_button.click()
        print("تم النقر على زر 'Add' بنجاح.")
    except Exception as e:
        print(f"حدث خطأ أثناء النقر على زر 'Add': {e}")
        continue

    # الانتقال لتنفيذ النقرات الإضافية باستخدام PyAutoGUI
    try:
        for idx, (x, y) in enumerate(EXTRA_CLICKS, start=1):
            print(f"\nسيتم النقر على الإحداثيات ({x}, {y}) خلال 5 ثوانٍ للمرة {idx}...")
            time.sleep(5)  # وقت قصير للمستخدم لترتيب الشاشة إذا لزم الأمر
            pyautogui.click(x=x, y=y)
            print(f"تم النقر على الإحداثيات ({x}, {y}) بنجاح للمرة {idx}.")
    except Exception as e:
        print(f"حدث خطأ أثناء النقر عبر PyAutoGUI: {e}")

    # الانتظار قبل النقر على "Sign out"
    time.sleep(2)

    # النقر على زر "Sign out"
    try:
        # محاولة العثور على زر "Sign out" باستخدام XPath
        sign_out_button = wait.until(
            EC.element_to_be_clickable((By.XPATH, SIGN_OUT_XPATH))
            # يمكنك استخدام CSS Selector بدلًا من XPath إذا لزم الأمر:
            # EC.element_to_be_clickable((By.CSS_SELECTOR, SIGN_OUT_CSS_SELECTOR))
        )
        # النقر على زر "Sign out"
        sign_out_button.click()
        print("تم النقر على زر 'Sign out' بنجاح.")
    except Exception as e:
        print(f"حدث خطأ أثناء النقر على زر 'Sign out': {e}")

    # الانتظار لبعض الوقت لضمان إتمام جميع العمليات قبل الانتقال للبروفايل التالي
    time.sleep(2)

# رسالة تأكيد
print(f"\nتم فتح {len(drivers)} بروفايل(ات).")

# إبقاء المتصفحات مفتوحة حتى يقوم المستخدم بإغلاقها
try:
    input("اضغط Enter لإغلاق جميع المتصفحات...")
finally:
    for driver in drivers:
        driver.quit()
    print("تم إغلاق جميع المتصفحات.")