• Selenium自动化发送163邮箱


    自动化发送163邮件

    方法一:

    import time
    import datetime
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    def login(user, pwd):
        """ 登录163邮箱 """
        # 由于可以扫码登录,而我们选择用户名和密码登录,所以,要点击 密码登录
        time.sleep(1)
        wait.until(EC.presence_of_element_located((By.ID, 'switchAccountLogin'))).click()
        # 进入iframe,因为有多个iframe,所以获取的是数组,在分析页面后,数组0索引的iframe是登陆的iframe
        time.sleep(3)
        iframe = driver.find_elements_by_tag_name('iframe')
        driver.switch_to.frame(iframe[0])
        # 获取用户名和密码标签,并输入对应的值
        time.sleep(1)
        driver.find_element_by_class_name('dlemail').send_keys(user)
        time.sleep(2)
        driver.find_element_by_class_name('dlpwd').send_keys(pwd)
        time.sleep(2)
        driver.find_element_by_id('dologin').click()
    
    def send_mail():
        """ 发送163邮件,需要传递163的用户名和密码,收件人和内容 """
        try:
            # 第1步,执行登陆
            login(user, pwd)
    
            # 第2步,点击写信按钮
            wait.until(EC.presence_of_element_located((By.ID, '_mail_component_24_24'))).click()
    
            # 第3步,获取收件人,主题,内容框标签,写入内容
            time.sleep(1)
            # 3.1 填写收件人
            wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-editableAddr-ipt'))).send_keys(addr)  # 收件人
            time.sleep(2)
            # 3.2 填写主题
            title = driver.find_elements_by_class_name('nui-ipt-input')
            title[2].send_keys(theme)  # 主题
            # 3.3 进入content所在iframe,填写内容
            time.sleep(1)
            content_iframe = driver.find_element_by_class_name('APP-editor-iframe')
            driver.switch_to.frame(content_iframe)
            # 虽然nui-scroll这个类名在整个网页中有多个,但是这个iframe中只有一个,所以我们直接send_keys就行
            nui_scroll = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'nui-scroll')))
            nui_scroll.send_keys(content)
    
            # 第4步,因为发送按钮不在此时的iframe中,所以要先退出iframe,才能点击发送按钮
            # 4.1 退出iframe
            time.sleep(1)
            driver.switch_to.default_content()
            # 4.2 点击发送按钮
            time.sleep(1)
            # 这个发送按钮的类名有多个,最好for循环一下,因为有坑,发送按钮是第3个,前面还有两个空标签,但是前端检查中看不到
            driver.find_elements_by_class_name('nui-btn-text')[2].click()
    
    
    
        finally:
            # 关闭浏览器
            time.sleep(3)
            # driver.quit()
    
    
    if __name__ == '__main__':
        from getpass import getpass
        user = input("邮箱: ").strip()  # 填写你的163账号
        # pwd = getpass('密码: ')  # 填写你的163密码  #getpass在pycharm中无法使用
        pwd = input('密码: ')  # 填写你的163密码
        # 获取driver
        driver = webdriver.Chrome()
        wait = WebDriverWait(driver, 5)
        # driver.maximize_window()
        # 发请求
        driver.get('https://mail.163.com/')
        addr = "1986109019@qq.com"  # 收件人
        theme = '我是你爸爸'  # 主题
        content = '天不生我李淳罡,剑道万古如长夜 ————
    {}'.format(datetime.datetime.now())  # 发送内容
        send_mail()
    

    方法二:

    import time
    from selenium import webdriver
    def worker():
        driver.get(url)
        driver.find_element_by_id('switchAccountLogin').click()
        iframe = driver.find_elements_by_tag_name('iframe')
        driver.switch_to.frame(iframe[0])
        driver.find_element_by_class_name('dlemail').send_keys(user)   #用户
        driver.find_element_by_class_name('dlpwd').send_keys(pwd)   #密码
        driver.find_element_by_id('dologin').click()  #登录按钮
        time.sleep(3)
        driver.find_element_by_xpath('//*[@id="_mail_component_24_24"]/span[2]').click()  #写信按钮
        driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(to)   #收件人
        driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys(theme)   #邮件主题
        driver.find_element_by_class_name('nui-close').click()
        content_iframe = driver.find_element_by_class_name('APP-editor-iframe') #找到iframe窗口
        driver.switch_to.frame(content_iframe)  #切到写内容的iframe窗口
        driver.find_element_by_class_name('nui-scroll').send_keys(content)   #邮件内容
        driver.switch_to.default_content()    #切换到之前的页面中
        driver.find_element_by_class_name('nui-mainBtn-hasIcon').click()
    if __name__ == '__main__':
        url = 'https://mail.163.com/'
        theme = '测试邮件主题'
        to = '1986109019@qq.com'
        content = '测试邮件内容.................................'
        user = input('用户名: ').strip()
        pwd = input("密码: ")
        driver = webdriver.Chrome()
        driver.implicitly_wait(3)
        worker()
        time.sleep(10)
        driver.quit()
    

    死循环发送:

    import time
    from selenium import webdriver
    def worker():
        driver.get(url)
        driver.find_element_by_id('switchAccountLogin').click()
        iframe = driver.find_elements_by_tag_name('iframe')
        driver.switch_to.frame(iframe[0])
        driver.find_element_by_class_name('dlemail').send_keys(user)   #用户
        driver.find_element_by_class_name('dlpwd').send_keys(pwd)   #密码
        driver.find_element_by_id('dologin').click()
        time.sleep(3)
        m = 0
        while 1:
            m += 1
            content = '波波牛逼,欧力给!!!测试{}'.format(m)
            driver.find_element_by_xpath('//*[@id="_mail_component_24_24"]/span[2]').click()
            print(to)
            driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(to) #收件人
            driver.find_elements_by_class_name('nui-ipt-input')[2].send_keys(theme)   #邮件主题
            driver.find_element_by_class_name('nui-close').click()
            content_iframe = driver.find_element_by_class_name('APP-editor-iframe')  #找到写信的iframe
            driver.switch_to.frame(content_iframe)  #切换iframe窗口
            driver.find_element_by_class_name('nui-scroll').send_keys(content)   #邮件内容
            driver.switch_to.default_content()
            driver.find_element_by_class_name('nui-mainBtn-hasIcon').click()   #发送
            time.sleep(2)
            driver.find_elements_by_class_name('nui-ico-close')[2].click()  #关闭已发送界面
            time.sleep(2)
            driver.find_element_by_id('_mail_tabitem_0_3text').click()   #首页按钮
            time.sleep(2)
    if __name__ == '__main__':
        url = 'https://mail.163.com/'
        theme = '测试邮件主题'
        to = '2604133307@qq.com'
        user = input('用户名: ').strip()
        pwd = input("密码: ")
        driver = webdriver.Chrome()
        driver.implicitly_wait(3)
        worker()
        time.sleep(10)
        driver.quit()
    
  • 相关阅读:
    es6类
    ES6模块化
    es6之常/变量
    es6之结构赋值
    es6之箭头函数、rest函数
    es6的新方法
    数组的使用方法
    Vue接口调用问题
    监听器和计算属性
    Vue路由
  • 原文地址:https://www.cnblogs.com/Nayears/p/12117951.html
Copyright © 2020-2023  润新知