pycharm一些快捷键:

‘ ctrl ’ +‘ / ’ :注释

‘ Tab ’ :同时缩进

‘ shift ’ +‘ Tab ’ :左移 一次缩进

本文webinfo.txt路径:C:\Python27\New Folder\case\webinfo.txt

userinfo.txt路径:C:\Python27\New Folder\case\userinfo.txt

webinfo内容:

  1. url=https://mail.163.com/
  2. account_name=email
  3. pwd_name=password
  4. login_id=dologin
  5. logout=退出
  6. relogin=relogin

userinfo内容:

  1. uname=songping0914 pwd=qaz123456
  2. uname=songpingzi66 pwd=songping66

usedate.py:

  1. 1 #!/usr/bin/python
  2. 2 # -*- coding: UTF-8 -*-
  3. 3 # 这个程序 将webinfo 和 userinfo的内容读进来并转化为指定字典,列表
  4. 4 import codecs
  5. 5 def get_webinfo(path):
  6. 6 web_info = {}
  7. 7 config = codecs.open(path,'r','utf-8') #
  8. 8 # 有汉字的时候用
  9. 9 #config = open(path)
  10. 10 for line in config:
  11. 11 #result = line.split('=') 这样结尾会有 \n
  12. 12 result = [ele.strip() for ele in line.split('=')] #列表解析
  13. 13 web_info.update(dict([result])) #列表转化为字典 更新到webinfo中
  14. 14 return web_info
  15. 15
  16. 16 def get_userinfo(path):
  17. 17 user_info = []
  18. 18 config = open(path)
  19. 19 for line in config:
  20. 20 user_dict = {}
  21. 21 result = [ele.strip() for ele in line.split(' ')] #列表解析 ['uname=songping0914', 'pwd=qaz123456']
  22. 22 for r in result:
  23. 23 account = [ele.strip() for ele in r.split('=')] #列表解析 ['uname', 'songping0914'] ['pwd', 'qaz123456']
  24. 24 user_dict.update(dict([account])) # {'uname': 'songping0914', 'pwd': 'qaz123456'}
  25. 25 user_info.append(user_dict)
  26. 26 return user_info
  27. 27
  28. 28 if __name__ == '__main__':
  29. 29 webinfo = get_webinfo(r'C:\Python27\New Folder\case\webinfo.txt')
  30. 30 # for key in webinfo:
  31. 31 # print(key,webinfo[key])
  32. 32 userinfo = get_userinfo(r'C:\Python27\New Folder\case\userinfo.txt')
  33. 33 # for l in userinfo:
  34. 34 # print(l)
  35. 35 # print (userinfo)
  36. 36 print userinfo
  37. 37 print webinfo

autologin代码:

  1. 1 #!/usr/bin/python
  2. 2 # -*- coding: UTF-8 -*-
  3. 3 from selenium import webdriver
  4. 4 from selenium.webdriver.support.ui import WebDriverWait
  5. 5 from time import sleep
  6. 6 from usedate import get_webinfo,get_userinfo
  7. 7 import codecs
  8. 8
  9. 9 #自动登入163邮箱
  10. 10 def openBrower():
  11. 11 webdriver_handle = webdriver.Chrome()
  12. 12 return webdriver_handle
  13. 13
  14. 14 def openUrl(handle,url):
  15. 15 '''load url'''
  16. 16 handle.get(url)
  17. 17 handle.maximize_window()
  18. 18 sleep(3)
  19. 19
  20. 20 def findElement(d,args): #定位登入页面输入框和登入按键的元素
  21. 21 '''1:login_name
  22. 22 2 account_name
  23. 23 3 pwd_name
  24. 24 4 login_id'''
  25. 25 # if mailid in args:
  26. 26 ele_account = WebDriverWait(d, 10).until(lambda d:d.find_element_by_name(args['account_name']))
  27. 27 ele_pwd = d.find_element_by_name(args['pwd_name'])
  28. 28 ele_login_btn = d.find_element_by_id(args['login_id'])
  29. 29 return ele_account,ele_pwd,ele_login_btn
  30. 30
  31. 31 def sendVals(eletuple,arg): # 将用户名密码输入到 以上元素位置
  32. 32 '''eletuple: 输入框 ,arg = each = userinfo_list {account :uname pwd}'''
  33. 33 listkey = ['uname','pwd']
  34. 34 i = 0
  35. 35 for key in listkey:
  36. 36 #eletuple[i].send_keys('')
  37. 37 eletuple[i].clear()
  38. 38 eletuple[i].send_keys(arg[key])
  39. 39 i+=1
  40. 40 eletuple[2].click()
  41. 41 sleep(2)
  42. 42
  43. 43 def logout(d,args):
  44. 44 d.find_element_by_link_text(args['logout']).click()
  45. 45 sleep(2)
  46. 46 d.find_element_by_class_name(args['relogin']).click()
  47. 47 sleep(2)
  48. 48
  49. 49 def get_ele_tmes(d,times,fun):
  50. 50 return WebDriverWait(d,times).until(func)
  51. 51
  52. 52 def login_test():
  53. 53 d = openBrower()
  54. 54 webinfo_dict = get_webinfo(r'C:\Python27\New Folder\case\webinfo.txt')
  55. 55 openUrl(d,webinfo_dict['url'])
  56. 56 d.switch_to.frame("x-URS-iframe")
  57. 57 ele_tuple =findElement(d,webinfo_dict)
  58. 58 userinfo_list = get_userinfo(r'C:\Python27\New Folder\case\userinfo.txt')
  59. 59 '''
  60. 60 webinfo_dict = {'url': 'https://mail.163.com/', 'login_id': 'dologin', 'account_name': 'email',
  61. 61 'pwd_name': 'password','logout':u'退出','relogin':'relogin'}
  62. 62
  63. 63 userinfo_list = [{'uname': 'songping0914', 'pwd': 'qaz123456'}, {'uname': 'songpingzi66', 'pwd': 'songping66'}, {'uname': 'songpingzi0914', 'pwd': 'songping66'}]
  64. 64
  65. 65 '''
  66. 66 #
  67. 67 for each in userinfo_list:
  68. 68 sendVals(ele_tuple,each)
  69. 69 logout(d,webinfo_dict)
  70. 70 sleep(3)
  71. 71 # openUrl(d, webinfo_dict['url'])
  72. 72 # d.switch_to.frame("x-URS-iframe")
  73. 73 # d.find_element_by_name("email").clear()
  74. 74 sleep(3)
  75. 75 d.quit()
  76. 76
  77. 77
  78. 78 if __name__ == '__main__':
  79. 79 login_test()

错误提示:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

最后,第一次登入后退出,第二次登入不能进行,还未修改成功,有知道的大神请指点,修改,不甚感激

PS 附上自动发邮件的脚本:

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. from selenium import webdriver
  4. from time import sleep
  5. url1='https://mail.163.com/'
  6. url2='https://mail.126.com/'
  7. account1='songping0914'
  8. password1='qaz123456'
  9. account2='songpingzi66'
  10. password2='songping66'
  11. driver = webdriver.Chrome()
  12. driver.maximize_window() #最大化
  13. driver.get(url1)
  14. sleep(2) #切换到表单
  15. driver.switch_to.frame("x-URS-iframe") #
  16. driver.find_element_by_name("email").clear()
  17. driver.find_element_by_name("email").send_keys(account1)
  18. driver.find_element_by_name("password").clear()
  19. driver.find_element_by_name("password").send_keys(password1)
  20. driver.find_element_by_id("dologin").click()
  21. sleep(2)
  22. driver.switch_to.default_content()
  23. driver.find_element_by_xpath(".//*[@id='_mail_component_70_70']").click()
  24. sleep(2)
  25. driver.find_element_by_class_name("nui-editableAddr-ipt").clear()
  26. account3='songpingzi66@126.com'
  27. driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys(account3)
  28. sleep(2)
  29. driver.find_element_by_css_selector("div[id^='_mail_input_3']>input.nui-ipt-input").send_keys(u"测试webweb")
  30. af = driver.find_element_by_class_name('APP-editor-iframe')
  31. driver.switch_to.frame(af)
  32. driver.find_element_by_xpath('//body[@class="nui-scroll"]').send_keys("Good study, day day up!")
  33. driver.switch_to.default_content()
  34. driver.find_element_by_css_selector("div[id^='_mail_button_2']>span.nui-btn-text").click()

python selenium 多账户自动登入163邮箱的更多相关文章

  1. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  2. Ubuntu获取root 权限,开机自动登入root

    新机器获取root权限,只需要给root 增加密码: sudo passwd root 修改开机自动登入: #sudo gedit /etc/lightdm/lightdm.conf 修改参数: au ...

  3. Ubuntu输入密码之后,桌面闪一下黑屏,然后又返回到输入密码界面。但是其他账户可以登入

    1)原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件 说明:Xauthority,是startx脚本记录文件.Xserver启动时 ...

  4. 利用WebBrowser实现自动登入功能

    公司内部改革,对考勤方面做出调整,要求实现办公自动化,在OA进行上下班考勤:作为程序员,突发奇想如何实现自动化考勤应用? 需求如下: 可设置考勤地址.用户信息.上下班时间: 根据设置的上下班时间,定时 ...

  5. ssh自动登入

    公司的服务器在国外,所以测试的查看日志的时候需要测试机,然后继续ssh 非常不方便,所以编写一个简单的ssh登入脚本 #!/usr/bin/expectset timeout 3spawn ssh n ...

  6. java web实现在cookie中保存用户名和密码,用户自动登入

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. python基础篇---实战---用户登入注册程序

    一.首先了解需求: 1.支持多个用户登入 2.登入成功后显示欢迎,并退出程序 3.登入三次失败后,退出程序,并在下次程序启动尝试登入时,该用户名依然是锁定状态 二.文件代码如下: f = open(& ...

  8. python+ selenium 实现简历自动刷新

    本文用到的文件的下载地址 百度网盘链接: https://pan.baidu.com/s/1wIda-wUz4X_Ck72xgZ6Ddg 提取码: etaa 1 安装Python 和 selenium ...

  9. MY_使用selenium自动登录126/163邮箱并发送邮件

    转自:https://www.cnblogs.com/yin-tao/p/7244082.html 我使用的是python2.7.13+selenium ps:几天之前,我曾多次尝试写这段代码,但是在 ...

随机推荐

  1. [atARC123F]Insert Addition

    前置知识 下面,先来介绍一下Stern-Brocot Tree的结构: 其是一棵满二叉树,每一个节点都是一个最简分数,其中根为$\frac{1}{1}$ 假设前$i$层的中序遍历分数依次为$\frac ...

  2. 1、使用ValueOperations操作redis(String字符串)

    文章来源:https://www.cnblogs.com/shiguotao-com/p/10559997.html 方法 c参数 s说明   void set(K key, V value); ke ...

  3. 【2020五校联考NOIP #6】最佳观影

    题意: 给出一个 \(k \times k\) 的网格和 \(n\) 次操作.其中 \(k\) 为奇数. 每次操作给出一个数 \(m\).每次你要找出一个三元组 \((x,l,r)\) 使得: \(r ...

  4. Atcoder Grand Contest 038 E - Gachapon(Min-Max 容斥+背包)

    Atcoder 题面传送门 & 洛谷题面传送门 我竟然能独立做出 Ag 的 AGC E,incredible!更新了 Atcoder 做题难度上限( 首先按照套路 Min-Max 容斥,\(a ...

  5. 『学了就忘』Linux文件系统管理 — 61、使用parted命令进行分区

    目录 1.parted命令介绍 2.parted交互模式 3.建立分区 (1)查看分区 (2)修改成GPT分区表 (3)建立分区 (4)建立文件系统(格式化) (5)调整分区大小 (6)删除分区 1. ...

  6. 富集分析DAVID、Metascape、Enrichr、ClueGO

    前言 一般我们挑出一堆感兴趣的基因想临时看看它们的功能,需要做个富集分析.虽然公司买了最新版的数据库,如KEGG,但在集群跑下来嫌麻烦.这时网页在线或者本地化工具派上用场了. DAVID DAVID地 ...

  7. Golang gRPC调试工具

    目录 Golang gRPC调试工具 1. 命令行工具 grpcurl 1.1 安装 1.2 验证 1.3 注册反射 1.4 使用示例 2. web调试工具grpcui 2.1 安装 2.2 验证 2 ...

  8. python—模拟生成双色球号和大乐透号

    下边这个脚本,比较适合初级学习基本python语法用.但是,不精炼建议可参考https://www.cnblogs.com/Formulate0303/p/14031748.html的写法. 大乐透玩 ...

  9. APP工程师接入Telink Mesh流程 -3

    加密是为了使网络更加的安全.健壮,若由于login.加密等流程 严重影响了 开发进程,也可以通过 修改SDK 固件 将login.加密 环节取消 1.发送数据.接受数据加密,解密去掉 mesh_sec ...

  10. 框架学习-MyBatis(01)

    1.MyBatis是持久层框架 什么是持久化: 狭义:把数据永久性的保存到数据当中 广义:针对于数据库的所有操作都称为持久化操作,CreateReadUpdateDelete操作 2.有哪些持久层框架 ...