模拟用户名和密码登录网易邮箱(不用授权码)-Selenium Python

常用各类软硬件使用技巧、疑难、最新资讯等相关交流
rungod
帖子: 52
注册时间: 2010-06-19 3:51

模拟用户名和密码登录网易邮箱(不用授权码)-Selenium Python

帖子 rungod »

需要Selenium支持,可以通过命令:pip install selenium 安装。

代码: 全选

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.common.keys import Keys  # 添加这一行以导入 Keys
import time

def setup_driver():
    """初始化webdriver并打开浏览器"""
    try:
        options = webdriver.ChromeOptions()
        # 可能需要添加 '--no-sandbox' 和 '--disable-dev-shm-usage' 来避免权限问题
        options.add_argument('--no-sandbox')
        options.add_argument('--disable-dev-shm-usage')
        driver = webdriver.Chrome(options=options)  # 确保chromedriver在系统PATH中或提供完整路径
        
        # 验证WebDriver是否成功启动浏览器
        driver.get("https://www.google.com")  # 测试页面
        print("WebDriver初始化成功")
        return driver
    except Exception as e:
        print(f"WebDriver初始化失败: {e}")
        return None

def login_netEase(driver):
    """使用Selenium登录网易邮箱"""
    try:
        # 打开网易邮箱登录页面
        driver.get("https://mail.163.com/")
        print("已加载网易邮箱登录页面")

        # 显式等待iframe出现并切换到iframe
        wait = WebDriverWait(driver, 10)
        iframe = wait.until(EC.presence_of_element_located((By.TAG_NAME, 'iframe')))
        driver.switch_to.frame(iframe)
        print("已切换到iframe")

        # 显式等待用户名输入框出现并输入用户名
        username_input = wait.until(EC.presence_of_element_located((By.NAME, 'email')))
        username_input.send_keys('xrsoft@163.com')  # 替换成你的邮箱地址
        print("已输入用户名")

        # 输入密码
        password_input = driver.find_element(By.NAME, 'password')
        password_input.send_keys('your_password')  # 替换成你的密码
        print("已输入密码")

        # 提交表单
        password_input.send_keys(Keys.RETURN)  # 使用 Keys.RETURN 来提交表单
        print("提交登录表单")
        
        # 等待一段时间以查看是否成功登录
        time.sleep(10)  # 这里可以根据实际情况调整等待时间或者使用更精确的等待方式
        print("登录操作完成,请检查浏览器状态")
        
    except TimeoutException:
        print("超时未找到元素,请检查页面结构是否发生变化")
    except NoSuchElementException as nse:
        print(f"找不到元素: {nse}")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    driver = setup_driver()
    if driver is not None:
        login_netEase(driver)
        # 最后关闭浏览器
        driver.quit()
心海质水
回复