pycharm一些快捷键:

‘ ctrl ’ +‘ / ’ :注释

‘ Tab ’ :同时缩进

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

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

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

webinfo内容:

url=https://mail.163.com/
account_name=email
pwd_name=password
login_id=dologin
logout=退出
relogin=relogin

userinfo内容:

uname=songping0914 pwd=qaz123456
uname=songpingzi66 pwd=songping66

usedate.py:

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

autologin代码:

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

错误提示:

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

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

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

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from selenium import webdriver
from time import sleep
url1='https://mail.163.com/'
url2='https://mail.126.com/'
account1='songping0914'
password1='qaz123456'
account2='songpingzi66'
password2='songping66'
driver = webdriver.Chrome()
driver.maximize_window() #最大化
driver.get(url1)
sleep(2) #切换到表单
driver.switch_to.frame("x-URS-iframe") #
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys(account1)
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys(password1)
driver.find_element_by_id("dologin").click()
sleep(2)
driver.switch_to.default_content()
driver.find_element_by_xpath(".//*[@id='_mail_component_70_70']").click()
sleep(2)
driver.find_element_by_class_name("nui-editableAddr-ipt").clear()
account3='songpingzi66@126.com'
driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys(account3)
sleep(2)
driver.find_element_by_css_selector("div[id^='_mail_input_3']>input.nui-ipt-input").send_keys(u"测试webweb")
af = driver.find_element_by_class_name('APP-editor-iframe')
driver.switch_to.frame(af)
driver.find_element_by_xpath('//body[@class="nui-scroll"]').send_keys("Good study, day day up!")
driver.switch_to.default_content()
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. page_fault_in_nonpaged_area异常解决方案(已解决)

    电脑在运行虚拟机的时候异常重启,多次打开结果一样,问了客服告诉我导致蓝屏的原因很多,可能是驱动不兼容,系统,或其他.{没点有用的} 百度到这个方案: 打开->此电脑->右键属性->高 ...

  2. 17 款程序员必备 Chrome扩展插件,爱了爱了!

    整理:小哈学Java 目录 美化 Just Black 午夜黑官方主题 Dark Reader 暗黑主题 为什么你们就是不能加个空格呢? 标签管理 Momentum [新标签页] Tab Manage ...

  3. 比对软件Blast,Blast+,Diamond比较

    1. Blast (1)格式化数据库 formatdb -i db.seq -p T -o T -l logfile 主要参数: -i 输入需要格式化的源数据库名称 -p 文件类型,是核苷酸序列数据库 ...

  4. WSL + MobaXterm 取代虚拟机

    windows子系统安装默认C盘,这里我们直接下载安装文件安装在我们指定的目录. 1.先去官方网站下载安装文件:https://docs.microsoft.com/zh-cn/windows/wsl ...

  5. Excel-vlookup内部能不能用函数?(即内部嵌套函数)

    11.vlookup(查找值,目标区域,列序号,FALSE0/TRUE1)内部能不能用函数?(即内部嵌套函数) 总结:只能说有,但不是所有,目前还没有找到规律(唯一的规律是内嵌函数结果值得是符合vlo ...

  6. EXCEL-排名前三名显示小红旗,后三名显示小黑旗

    总结(用的WPS):第一步:用=IF(RANK(数值,引用范围) <=3,"小红旗",IF(RANK(数值,引用,1) <=3,"小黑旗",&quo ...

  7. ARM汇编基础指令

    Cortex-A7 常用汇编指令 一.处理器内部数据传输指令 1.mov 将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面 MOV R0,R1 @将寄存器 R1 中的数据传递给 ...

  8. Shell 格式化输出printf、awk

    目录 Shell 文件的格式化与相关处理 printf.awk 格式化打印printf 案例.格式化输出文件内容 输出命令echo 案例 awk数据处理工具 语法格式 处理流程 AWK内置变量 条件 ...

  9. 学会这几步,简单集成视频编辑原子能力SDK

    华为视频编辑服务6.2.0版本上线后,我们为大家带来了两大变化:分别是丰富多样的AI能力和灵活选择的集成方式.为让开发者更快上手使用,今天小编带来了视频编辑原子能力SDK的具体集成方法.快来试试吧! ...

  10. 零基础学习java------day1------计算机基础以及java的一些简单了解

    一. java的简单了解 Java是一门面向对象编程语言,不仅吸收了C++的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态 ...