自动化学习记录问题1
来源:互联网 发布:田园城市 知乎 编辑:程序博客网 时间:2024/05/23 00:00
今天,学了一些基础的教程之后,我就迫不及待的想要自己做一个自动发送邮件的脚本。于是我选择了使用最多的QQ邮箱进行发送。
期间进行了2天遇到了几个难点。1)进入到QQ邮箱登陆界面的时候,无法定位到账号、密码的登陆框,这让我很疑惑,根据所学的东西,明明是可以通过driver.find_element_by_id('u')来定位到账号输入框的,可是我试了几次之后都是提示无法找到。好家伙难道我学的是假的?于是我上网查,原来登陆框是在一个frame中的,需要先切换到frame才能进行的,通过学习加了一行代码:driver.switch_to.frame("login_frame") ,于是我成功登陆到了QQ邮箱。
登陆进去之后很快又遇到了第二个问题,又是无法定位到写信按钮,同样的道理需要切换,于是通过百度加了一行切换的代码:driver.switch_to_default_content()。进入写信界面之后还是遇到无法定位到的问题,在填写收件人、主题和正文的时候都无法定位到,原因也是一样的因为写信界面 是在一个mainFrame中的,所以要先切换到mainFrame中,用了driver.switch_to.frame('mainFrame')这个,接下来的事情就好办了,就是定位的问题了。首先是找收件人框,说实话真的不好找,我试了直接用ID,用class_name等都还是找不到,后来只好百度,大神给出的答案是driver.find_element_by_xpath('//*[@id="toAreaCtrl"]/div[2]/input'),看了代码和定位元素之后我瞬间明白了,收件人框没有直接的ID,智能逐级找出。后面的主题和正文就相对好找一点了,分别是driver.find_element_by_xpath('//*[@id="subject"]')和driver.find_element_by_class_name('qmEditorIfrmEditArea'),最后再发送就OK了。
经过QQ邮箱自动发送邮件的实例之后,让我对python+selenium自动化有了基本的认识和兴趣,其中重点就是定位元素和对网页代码的了解。以后多自己写一些实例,看别人的代码,自然就能做到熟能生巧了。下面贴上我初入自动化写的代码:
from selenium import webdriver
import time
driver=webdriver.Firefox()
driver.get('https://mail.qq.com/cgi-bin/loginpage')
time.sleep(3)
# 切换iframe
driver.switch_to.frame("login_frame")
#输入账号
driver.find_element_by_xpath('//input[@id="u"]').send_keys('xxxxxx')
#输入密码
time.sleep(3)
driver.find_element_by_xpath('//input[@id="p"]').send_keys('xxxxxx')
#点击登录
driver.find_element_by_id('login_button').click()
time.sleep(7)
#进行页面切换
driver.switch_to_default_content()
driver.find_element_by_link_text('写信').click()
time.sleep(5)
#切换到写信界面
driver.switch_to.frame('mainFrame')
#填写收件人
driver.find_element_by_xpath('//*[@id="toAreaCtrl"]/div[2]/input').send_keys('497051142@qq.com')
time.sleep(3)
#填写主题
driver.find_element_by_xpath('//*[@id="subject"]').send_keys('test web')
time.sleep(3)
#写入正文
o = driver.find_element_by_class_name('qmEditorIfrmEditArea')
o.send_keys('刘先生,你好,这时来自您的第一封自动化发送的邮件')
time.sleep(5)
#点击发送按钮
driver.find_element_by_link_text('发送').click()
print('邮件发送完成!')
- 自动化学习记录问题1
- 自动化测试学习记录1
- Selenium自动化持续集成问题记录
- RIDE自动化遇到的问题与记录
- python自动化运维学习记录2
- 状态估计问题学习记录(1)
- OpenGL学习问题记录
- OAF学习问题记录
- java学习问题记录
- hadoop学习问题记录
- 学习cocos2dx问题记录
- ligerui学习问题记录
- Android学习问题记录
- struts 学习问题记录
- Python 学习问题记录
- Hadoop学习问题记录
- C#学习问题记录
- cadence学习问题记录
- [JavaEE]Struts2路径问题(如何在jsp页面正确访问struts.xml中的action)
- Linux下查找文件及查找包含指定内容的文件常用命令
- PyCharm安装之旅——20171207
- struts.objectFactory
- PrintWriter中write与println方法的区别
- 自动化学习记录问题1
- web前端安全
- Altium Designer 16相关入门教程
- 算法 (排序乐园Lv-2) 插入排序代码实现
- python抽象类、抽象方法的实现
- codeforces 890B. Vlad and Cafes
- 字符串编码解码的一点理解
- knn代码
- node.js那些事