代码: 全选
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()