【Watir Webdriver】自动登录QQ邮箱并发送电子邮件
来源:互联网 发布:软件开发 项目 编辑:程序博客网 时间:2024/04/29 03:47
最近重新熟悉Web driver,以前曾经摸索过Selenium,不过这次发现Watir+Webdriver用起来也是蛮就手。
以下是一个脚本实现了登陆QQ邮箱,并发送邮件的过程,包括指定收件人、主题、正文、附件,最后还确认了发送成功,否则就截屏保存下来。
说明一下:
1、脚本中频繁使用wait_until_present,是为了保险。应该还有更优雅的方法吧?
2、对于不是自己开发的页面,分析清楚页面的源码结构是必须的,比如QQ邮箱页面,需要注意到有一个frame(:id,'mainFrame')才能正确定位到邮件相关的各种元素。
3、添加附件的做法不是仿照手工点击的,不会弹出一个对话框
以下是一个脚本实现了登陆QQ邮箱,并发送邮件的过程,包括指定收件人、主题、正文、附件,最后还确认了发送成功,否则就截屏保存下来。
说明一下:
1、脚本中频繁使用wait_until_present,是为了保险。应该还有更优雅的方法吧?
2、对于不是自己开发的页面,分析清楚页面的源码结构是必须的,比如QQ邮箱页面,需要注意到有一个frame(:id,'mainFrame')才能正确定位到邮件相关的各种元素。
3、添加附件的做法不是仿照手工点击的,不会弹出一个对话框
4、截屏比较方便,使用browser.screenshot.save
# coding: gb2312require 'watir-webdriver'# 给String类增加一个编码转换的实例方法gb2312,即把字符串按gb2312编码,可避免Watir从网页提取中文字符时乱码class Stringdef gb2312self.encode("gb2312")endend# 打开chrome driverbrowser = Watir::Browser.new :chromebegin# 登陆QQ邮箱首页browser.goto 'http://mail.qq.com'# 输入邮箱账户browser.text_field(:name,"uin").wait_until_presentbrowser.text_field(:name,"uin").send_keys("QQ账号")# 输入密码browser.text_field(:name, "p").wait_until_presentbrowser.text_field(:name, "p").send_keys("密码")# 点击登陆browser.input(:id, "btlogin").wait_until_present browser.input(:id, "btlogin").click# 选择写信browser.a(:id,"composebtn").wait_until_presentbrowser.a(:id,"composebtn").click# 输入收件人地址browser.frame(:id,'mainFrame').input(:xpath,"//div[@id='toAreaCtrl']/div[@class='addr_text']/input").wait_until_presentbrowser.frame(:id,'mainFrame').input(:xpath,"//div[@id='toAreaCtrl']/div[@class='addr_text']/input").send_keys('收件人邮箱地址')# 输入主题browser.frame(:id,'mainFrame').input(:xpath, "//td[@class='content_title']/div/div/div/input[@id='subject']").wait_until_presentbrowser.frame(:id,'mainFrame').input(:xpath, "//td[@class='content_title']/div/div/div/input[@id='subject']").send_keys('新年快乐')# 输入正文browser.frame(:id,'mainFrame').iframe(:xpath, "//td[@class='qmEditorContent']/iframe").wait_until_presentbrowser.frame(:id,'mainFrame').iframe(:xpath, "//td[@class='qmEditorContent']/iframe").send_keys('恭喜发财')# 选择附件browser.frame(:id,'mainFrame').file_field(:name, 'UploadFile').set('C:/watir/qqmail.rb')# 点击发送browser.frame(:id,'mainFrame').a(:name, "sendbtn").wait_until_presentbrowser.frame(:id,'mainFrame').a(:name, "sendbtn").click# 应该还可以采用更效率的方法以确定发送完成sleep 60# 确认发送结果, 如果与预期结果不一样就截屏保存下来browser.frame(:id,'mainFrame').b(:id, "sendinfomsg").wait_until_presentacctual_send_result_info = browser.frame(:id,'mainFrame').b(:id, "sendinfomsg").text.gb2312expect_send_result_info = "您的邮件已发送"if acctual_send_result_info != expect_send_result_infobrowser.screenshot.save('d:/qqmail.rb.error.png')raise "点击发送后结果(#{acctual_send_result_info})不符合预期(#{expect_send_result_info})"endputs "发送成功"rescue => errorputs "出现异常:#{error}"ensurebrowser.close if browserend
下来慢慢总结Watir+Webdriver在WEB UI自动化方面的各种应用。
0 0
- 【Watir Webdriver】自动登录QQ邮箱并发送电子邮件
- python实现自动登录qq邮箱,写邮件并发送
- [selenium]实现自动登录163邮箱并发送邮件
- JavaMail登录163发送QQ邮箱
- 自动模拟邮箱登陆并发送邮件
- 从指定邮箱发送电子邮件
- 利用python smtplib 登录QQ邮箱发送邮件
- Python登录qq邮箱发送邮件(附件)
- 使用WebDriver 登录163邮箱
- QQ邮箱发送验证
- qq邮箱发送
- QQ邮箱发送信息
- QQ邮箱发送邮件
- QQ邮箱模拟登录
- 使用python登录邮箱并发送邮件(正文,附件)
- 用beidasoft@163邮箱发送电子邮件
- 定期自动备份SVN版本并发送致邮箱中
- 每晚11点自动生成Excel,并发送至邮箱
- 浅谈算法和数据结构: 四 快速排序
- LG su760手机刷机,降级,救砖教程
- fork函数理解
- [leet code] Flatten Binary Tree to Linked List
- 常见 PHP (5.4.24) 编译错误解决方法[备忘]
- 【Watir Webdriver】自动登录QQ邮箱并发送电子邮件
- English job interview Questions and Answers
- BGP Graceful Restart(NSF)
- iOS- xib(nib) 的重用(在有些情况下有利于加快项目功能的实现)
- FOJ 1759 Super A^B mod C
- 话存储
- UVA 118 Mutant Flatworld Explorers
- 图像处理之空间域图像增强
- 【JS】js高级特性备忘