代码部分
import time
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
# 启动浏览器
driver = webdriver.Chrome()
try:
# 打开 QQ 邮箱页面
driver.get("https://mail.qq.com")
print("打开QQ邮箱页面成功!")
# 设置显式等待,超时时间为30秒
wait = WebDriverWait(driver, 30)
# 切换到二维码框的 iframe
driver.switch_to.frame(1)
driver.switch_to.frame("ptlogin_iframe")
print("成功切换到二维码框的 iframe!")
#看页面是否加载完整!就是看二维码是否可见
# 等待元素可见
element_erweima = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="qrlogin_img"]')))
print("二维码可见,页面加载完成!")
# 切回到主页面
driver.switch_to.default_content()
print("切回到主页面")
# 切换到密码登陆框的 iframe
driver.switch_to.frame(1)
driver.switch_to.frame("ptlogin_iframe")
print("成功切换到密码登陆框的 iframe!")
# 点击密码登陆按钮
button = driver.find_element(By.XPATH, '//*[@id="switcher_plogin"]')
button.click()
print("成功点击密码登陆按钮!")
# 切回到主页面
driver.switch_to.default_content()
print("切回到主页面")
# 切换到账号密码框的 iframe
driver.switch_to.frame(1)
driver.switch_to.frame("ptlogin_iframe")
print("成功切换到账号密码框的 iframe")
# 输入账号
email_input = driver.find_element(By.XPATH, '//*[@id="u"]')
email_input.send_keys("3221231187")
# 输入密码
password_input = driver.find_element(By.ID, "p")
password_input.send_keys("13302775336Ma.")
time.sleep(5)
print("账号密码已输入!")
# 点击登录按钮
login_button = driver.find_element(By.ID, "login_button")
login_button.click()
print("切换人工!")
# 记录初始 URL
initial_url = driver.current_url
# # 使用显示等待,判断元素是否“过时”,即页面刷新后该元素消失
# wait.until(EC.staleness_of(login_button))
# print("登录按钮已过时!页面正在刷新")
# 设置显式等待
wait = WebDriverWait(driver, 180)
# 使用显示等待,等待页面 URL 发生变化
wait.until(EC.url_changes(initial_url))
print("页面刷新成功!")
time.sleep(30)
print("登录成功!")
finally:
# 关闭浏览器
driver.quit()