MY_使用selenium自动登录126/163邮箱并发送邮件
转自:https://www.cnblogs.com/yin-tao/p/7244082.html
我使用的是python2.7.13+selenium
ps:几天之前,我曾多次尝试写这段代码,但是在点击写信的步骤时失败了,我想我的问题应该大致是这几点:
1.写信按钮不能直接定位到,同时它的父目录id是动态的,我当时使用xpath定位到了这个动态的id,所以失败是必然的,那么就需要我们继续寻找向上寻找父目录,即多层级的xpath(建议多使用xpath/css)成功率会更高,因为层级越少,那么出现重复的可能越大(比如126写信中的主题的class和搜索框的class是一样的,当然还有很多)
2.页面的加载未完全,导致元素未找到而出现错误,所以需要我用到显示和隐式等待
3.同时要及时清除浏览器中的缓存,因为垃圾过多会导致浏览器运行变慢甚至崩溃
好了,话有点多了,直接贴代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#coding:UTF-8import timefrom selenium.webdriver.common.keys import Keysfrom selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(30)<br>#隐式等待,不影响用例执行速度<br>#如果登录时出现了验证码,可以将等待时长设置更长(如60),手动点击完成验证,并点击登录(ps:自动验证码很难,我感觉这种类型的验证码是其中的Boss)driver.get('http://mail.126.com/')driver.switch_to_frame('x-URS-iframe')<br>#登录页面存在iframedriver.find_element_by_name('email').clear()driver.find_element_by_name('email').send_keys('testingwtb')driver.find_element_by_name('password').send_keys('a123456', Keys.ENTER)time.sleep(6)<br>#跳转页面时,强制等待6sdriver.find_element_by_xpath("//div[@id='dvNavTop']/ul/li[2]/span[2]").click()<br>#点击写信按钮time.sleep(2)driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys('780720038@qq.com')<br>#收件人driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @type='text' and @maxlength='256']").send_keys(u'测试')<br>#主题xpath = driver.find_element_by_xpath("//div[@class='APP-editor-edtr']/iframe")driver.switch_to_frame(xpath)<br>#文本内容在iframe中driver.find_element_by_xpath("//body[@class='nui-scroll' and @contenteditable='true']").send_keys(u'这是一个自动化测试邮件')driver.switch_to_default_content()<br>#发送按钮在iframe外,所以需要跳出driver.find_element_by_xpath("//div[@class='nui-toolbar-item']/div/span[2]").click()<br>#发送 |
MY_使用selenium自动登录126/163邮箱并发送邮件的更多相关文章
- python selenium 多账户自动登入163邮箱
pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...
- 自动化测试: Selenium 自动登录授权,再 Requests 请求内容
Selenium 自动登录网站.截图及 Requests 抓取登录后的网页内容.一起了解下吧. Selenium: 支持 Web 浏览器自动化的一系列工具和库的综合项目. Requests: 唯一的一 ...
- selenium数据驱动模式实现163邮箱的登录及添加联系人自动化操作
项目结构如下: 要求python3.0 selenium3.0 下面是代码: appModubles:addContactPersonActtion.py和LoginAction.py addCont ...
- Python+selenium自动循环扔QQ邮箱漂流瓶
Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...
- python登录网易163邮箱,爬取邮件
from common import MyRequests,LoggerUntil,handle_exception myRequests.update_headers({ 'Accept':'tex ...
- HttpClient+jsoup登录+解析 163邮箱
找了几个,只有这个靠谱,用的是httpclient4,另外还需要commons-lang和jsoup包 http://jsoup.org/ http://www.oschina.net/code/sn ...
- phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码
以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...
- 163邮箱 SMTP发送邮件注意点
在之前163邮箱注册的时候默认开通SMTP服务的,之后需要自己手动开始. 在配置的时候服务器的地址固定 用户名称就是你的邮箱 密码需要注意的是有的是你邮箱的密码,如果不对需要填写你的授权码!
- python webdriver 显示等待-自动登录126邮箱,添加联系人
脚本内容:#encoding=utf-8#author-夏晓旭from selenium import webdriverimport timefrom selenium.webdriver.supp ...
随机推荐
- Binlog中最容易踩到的坑
MySQL高可用架构中,主库复制是非常常见的一种. 当主库宕机后,可以提升一个从库作为新的主库,保证服务可用性:同时可以通过扩展从库,提高整个集群的QPS. 在主从复制架构下,MySQL通过binlo ...
- zabbix 通过自定义key完成网卡监控
创建执行脚本: # cat /etc/zabbix/monitor_scripts/network.sh #!/bin/bash #set -x usage() { echo "Useage ...
- G1 Garbage Collector and Shenandoah
http://www.diva-portal.se/smash/get/diva2:754515/FULLTEXT01.pdf https://is.muni.cz/th/ifz8g/GarbageC ...
- spark-architecture
https://0x0fff.com/spark-architecture-shuffle/ https://0x0fff.com/spark-memory-management/ https://0 ...
- 每日英语:Apple Unveils New iPads
Apple Inc. 's answer to the increasingly cutthroat tablet-computer market: more product choices and ...
- 碰撞器与触发器[Unity]
请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加 ...
- node的http请求
//node的http服务 'use strict' var http = require('http') var server = http.createServer(function (reque ...
- MATLAB中-27开3次方得不到-3的原因
原代码: y=@(x) x.^(/); 运行结果: >> y(-27) ans = 1.5000 + 2.5981i 原因: 用(-8)^(1/3)时,matlab其实是调用C = pow ...
- 【论文笔记】多任务学习(Multi-Task Learning)
1. 前言 多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法.在机器学习领域,标准的算法理论是一次学习一个任务,也就 ...
- RFC 4627 JSON
Network Working Group D. Crockford Request for Comments: 4627 JSON.org Category: Informational July ...