import uuid
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException
from selenium.webdriver.common.by import By

def signup(URL, driver):
    username = 'TestUser' + str(uuid.uuid1()).split('-')[0].title()
    password = '[Abc+123]'

    driver.get(URL)
    
    try:
        # Click the register link
        register_link = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.LINK_TEXT, '注册'))
        )
        register_link.click()
        
        # Fill the registration form
        username_field = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, 'username'))
        )
        username_field.send_keys(username)

        password_field = driver.find_element(By.ID, 'password')
        password_field.send_keys(password)

        confirm_password_field = driver.find_element(By.ID, 'password2')
        confirm_password_field.send_keys(password)

        # Click the register button
        register_button = driver.find_element(By.CLASS_NAME, 'btn')
        register_button.click()

        # Handle possible alert
        try:
            WebDriverWait(driver, 1).until(EC.alert_is_present())
            alert = driver.switch_to.alert
            alert.accept()
        except (UnexpectedAlertPresentException, NoAlertPresentException):
            pass
        
        return username, password
    
    except Exception as e:
        print(f"An error occurred: {e}")
        return None, None