关于#selenium#的问题,如何解决?

python中selenium实现自动化登录qq网页的问题
请大家帮忙看一下我的代码,每次定位到点击登录后就定位不到密码登录,就直接报错了

img

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

打开谷歌浏览器

driver = webdriver.Chrome()

打开网页

driver.get("https://mail.qq.com/%22)

等待页面加载完成

sleep(5)

切换到iframe中

iframe = driver.find_element(By.ID, "login_frame")
driver.switch_to.frame(iframe)
sleep(5)

# 输入用户名和密码登录

driver.find_element(By.ID, "u").send_keys("你的QQ账号")
sleep(3)
driver.find_element(By.ID, "p").send_keys("你的密码")
sleep(3)
driver.find_element(By.ID, "login_button").click()

等待发送完成

sleep(5)

关闭浏览器

driver.quit()

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7610748
  • 你也可以参考下这篇文章:python+selenium:控件等待,避免因未等待到控件,致使自动化报错
  • 除此之外, 这篇博客: python+selenium 实现自动化交互中的 2.4 发个qq邮件通知(不需要也可以直接跳过) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 先上代码:填好对应的邮箱、授权码(获取方法在注释中)、以及发送内容即可。

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    # 发送给个人邮箱
    # 用于构建邮件头
    # 发信方的信息:发信邮箱,QQ 邮箱授权码
    from_addr = '发送方@qq.com'
    # 进入qq邮箱->设置->账户->找到stmp服务,点击开启。验证后会给你一个授权码,直接复制,填入下方即可
    password = '自己的授权码'
    
    # 收信方邮箱
    to_addr = '收信方@qq.com'
    
    # 发信服务器
    smtp_server = 'smtp.qq.com'
    
    # 邮箱正文内容,第一个参数为内容(正文部分),第二个参数为格式(plain 为纯文本),第三个参数为编码
    msg = MIMEText('写信内容', 'plain', 'utf-8')
    
    # 邮件头信息
    msg['From'] = Header(from_addr)
    msg['To'] = Header(to_addr)
    msg['Subject'] = Header('标题')
    
    # 开启发信服务,这里使用的是加密传输
    server = smtplib.SMTP_SSL(smtp_server)
    server.connect(smtp_server, 465)
    # 登录发信邮箱
    server.login(from_addr, password)
    # 发送邮件
    server.sendmail(from_addr, to_addr, msg.as_string())
    # 关闭服务器
    server.quit()
    

登录页面是一个嵌套页面你需要进入iframe嵌套页面中才可以输入账号密码