本文涉及uibot技术:

  1. css-selector
  2. js函数调用
  3. excel文件写入和读取
  4. 鼠标和键盘
Dim arrRet = ""
Dim arrElement = ""
Dim objExcelWorkBook = ""
Dim objDatatable = ""
Dim hWeb = ""
Dim bRet = ""
Dim arr=[]
Dim body = []For i = 1 To 3 Step 1 push(body,["123@163.com","UiBot初级实践题"&i,"RPA实施工程师(初级)实践题"])
Next
TracePrint(body)
/*uibot自动登陆163邮箱,由于页面中的很多id属性都是动态的,换句话说,他只要刷新页面,它的id值就会变化,因此绝不能简单的通过uibot提供的鼠标点击等简单实现,需要通过分析页面中固定不变的信息,从而达到确认唯一的目标css-selector的强大功能为我们提供了方便*/
// 构建数据表,表头和数据
objDatatable = Datatable.BuildDataTable(body,["收件人","邮件主题","邮件内容"])
// 将数据表转化为数组
objDatatable = Datatable.GetDataTableByArray(objDatatable,True)
// 打开excel
objExcelWorkBook = Excel.OpenExcel("C:\\Users\\Administrator\\Desktop\\初级uibot考试.xlsx",True,"Excel","","")
// 将数组中的数据写入excel表
Excel.WriteRange(objExcelWorkBook,"Sheet1","A1",objDatatable,False)
// 打开163网站
hWeb = WebBrowser.Create("chrome","https://mail.163.com/",30000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"sBrowserPath":"","sStartArgs":""})
#icon("@res:o69kapd9-hvfb-5h75-8n0i-rimnaefc0l56.png")
// 获取输入框的特征固定祖宗元素,然后获取子元素
arrElement1 = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"id": "loginDiv","tag": "DIV"}],"wnd": [{"app": "chrome","cls": "Chrome_WidgetWin_1","title": "*"},{"cls": "Chrome_RenderWidgetHostHWND","title": "Chrome Legacy Window"}]},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})#icon("@res:c82qul3f-2b7d-69mb-km6p-aibh91vt36op.png")
// 通过页面分析,手动组装html特征
arrRet = push(arr,arrElement1[0]["html"][0])
arrRet = push(arrRet,{"id":"account-box","tag":"DIV"})
TracePrint(arrRet)
#icon("@res:cidad63e-muct-q1ms-vms1-jl9ntv4in9vi.png")
// 获取arrRet的子元素
arrElement = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":arrRet},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})
TracePrint(arrElement)
TracePrint(arrElement1[0]["html"][0])
TracePrint(arrElement[2]["html"][1])
#icon("@res:fs31osur-2i6q-vl29-tmd3-2ts1i3d5qhek.png")
// 用户名输入
Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[arrElement1[0]["html"][0],{"css-selector":"body>div>div>div>form>div>div>div","idx":1,"parentid":"account-box","tag":"DIV"}]},"123",True,20,10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":500,"bSetForeground":True,"sSimulate":"message","bValidate":False,"bClickBeforeInput":False})
#icon("@res:afhslqjc-7juu-qg1g-t46o-ri49h6m76hcb.png")
arrElement3 = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[arrElement1[0]["html"][0],{"css-selector":"div>div>div[class='u-input box']","parentid":"login-form","tag":"DIV"}]},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})
#icon("@res:qhsqv18q-e5rp-rcpm-eoh9-mporer1g4206.png")
//
TracePrint(arrElement3[2]["html"])
// 密码输入
#icon("@res:763rspva-875m-e7t4-cm7j-g6l0kpen2p4h.png")
Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":arrElement3[2]["html"]},"123",True,20,10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":500,"bSetForeground":True,"sSimulate":"message","bValidate":False,"bClickBeforeInput":False})
#icon("@res:n8uv090a-cuua-2lbg-18qr-iig9r849hbti.png")
// 点击登陆
Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[arrElement1[0]["html"][0],{"tag":"A","id":"dologin"}]},"left","click",10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate","bMoveSmoothly":False})
#icon("@res:dfpkj8nj-70ff-t864-7cog-73of2d2gqgi7.png")
#icon("@res:2tqi8a07-rbbp-svkb-ddsp-p7vhg7p3dgi8.png")
arrElement = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"LI","css-selector":"div#dvNavTop>ul>li:nth-child(2)"}]},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})
TracePrint(arrElement[0]["html"])
#icon("@res:1s6kin0v-4mqh-lv0i-r2un-ia4ghdpntiq8.png")
//点击写信
Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":arrElement[0]["html"]},"left","click",10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate","bMoveSmoothly":False})// 遍历列
For i = 2 To Excel.GetRowsCount(objExcelWorkBook,"Sheet1") Step 1 // 遍历行For j = Asc("A") To Excel.GetColumsCount(objExcelWorkBook,"Sheet1")+Asc("A")-1 Step 1 // 读取每一个单元格info = Excel.ReadCell(objExcelWorkBook,"Sheet1",Chr(j)&i) #icon("@res:mqns2b8n-m159-m622-g63c-60pt074n4avs.png")// 判断是否为收件人If j = Asc("A")#icon("@res:3ij5ofl7-5tli-r0sm-eger-9tutkr9lg6i4.png")arrElement = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"DIV","css-selector":"div.bz0"}]},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})TracePrint(arrElement[0]["html"])TracePrint(arrElement[1]["html"])#icon("@res:ul7n1caa-2pl9-casu-h2cd-2rrm19cfviiq.png")Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"DIV","css-selector":"div[title=发给多人时地址请以分号隔开]"}]},info,True,20,10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":500,"bSetForeground":True,"sSimulate":"message","bValidate":False,"bClickBeforeInput":False})TracePrint(arrElement[1]["html"])#icon("@res:v625ofet-1jk6-5i45-crnh-74qa7afh5u7s.png")Else// 是否为邮件主题If j = Asc("B")arrElement = UiElement.GetChildren({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"DIV","css-selector":"div.dG0>div.bz0>div.js-component-input.nui-ipt"}]},{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})TracePrint(arrElement[0]["html"])#icon("@res:a0ofig9b-rgj6-5daf-6fpm-hng0mqfomomq.png")Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":arrElement[0]["html"]},info,True,20,10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":500,"bSetForeground":True,"sSimulate":"message","bValidate":False,"bClickBeforeInput":False})Else// 邮件内容// 由于邮件内容的元素区域涉及跨域问题,所以通过js来抓取域中的元素js="function(){// 将信件内容写入邮件内容区域document.querySelector('iframe.APP-editor-iframe').contentWindow.document.querySelector('body.nui-scroll').innerHTML='"&info&"'return 123}"// 绑定当前浏览器hWeb = WebBrowser.BindBrowser("chrome",10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})// 运行js代码sRet = WebBrowser.RunJS(hWeb,js,True,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})TracePrint(b)End If   #icon("@res:iuf51jis-afsm-pap3-0n4h-k8uhg84cm3t3.png")End IfNext// 点击发送Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"SPAN","css-selector":"footer.jp0>div>span.nui-btn-icon"}]},"left","click",10000,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate","bMoveSmoothly":False})// 刷新页面,跳转到写信页面WebBrowser.Refresh(hWeb,{"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200})// 进行下一封邮件的写和发送操作
Next

uibot自动登陆163邮箱发送邮件相关推荐

  1. python 发送邮件 163_python练习-使用163邮箱发送邮件

    具体代码如下> #密码等敏感信息已经用****替换 import smtplib,sys from email.mime.text import MIMEText from email.head ...

  2. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...

  3. python基础编程:selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 QQ邮 ...

  4. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  5. Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  6. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相 ...

  7. 利用163 邮箱发送邮件

    1.利用163邮箱发送邮件 # _*_ coding:UTF-8 import time import smtplib from email.mime.text import MIMEText fro ...

  8. java 给qq邮箱发邮件_java实现163邮箱发送邮件到qq邮箱成功案例

    这篇文章主要为大家分享了java实现163邮箱发送邮件到qq邮箱成功案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 下载和上传附件.发送短信和发送邮件,都算是程序中 ...

  9. python自动获取163邮箱验证码

    PS:主要使用selenuim和谷歌驱动 这个里面难点主要是如何自动登录163邮箱,因为163邮箱里面模块的id或者classname都是动态码 所有首先需要定位登录框的frame 这一步 需要使用s ...

  10. 163邮箱java通用下载_java_java实现163邮箱发送邮件到qq邮箱成功案例,下载和上传附件、发送短信和 - phpStudy...

    java实现163邮箱发送邮件到qq邮箱成功案例 下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现 ...

最新文章

  1. 收集到的一些网络工程师面试题 和大家分享下
  2. 入门深度学习,但你知道哪些情况下不该使用深度学习吗?
  3. 负载均衡策略关键因素
  4. 数学分析原理 定理 6.4
  5. 浅谈ASP.NET内部机制(五)
  6. 通过Spark listener实现Direct模式读取Kafaka数据
  7. web API简介(二):客户端储存之document.cookie API
  8. svn还原文件中去掉已经删除的文件
  9. 支付宝服务窗接入常见问题说明
  10. springmvc 中文文档
  11. VI-ORB环境配置
  12. 钉钉开放平台:内网穿透工具 - 服务器免费打造教程
  13. CPU使用时间问题测试
  14. kdj超卖_【教你一招】KDJ超买超卖指标
  15. 《计算机网络》学习笔记 ·002【物理层】
  16. EAS 后台事务定时执行设置
  17. 在Word文档中快速插入水平线
  18. 从天使到A轮融资:创业者要迈过的9大生死关
  19. 商家如何抓住当下最火的抖音本地生活?
  20. ipad pro 文章

热门文章

  1. ZZULIOJ1035
  2. 【光学】基于matlab实现圆孔的菲涅尔衍射仿真
  3. Camera和Image sensor技术基础笔记(3) -- 色彩空间,CFA,bayer数据处理
  4. 肠道微生物组在人类神经系统疾病中的作用
  5. CIC滤波器设计原理总结
  6. pix4d操作流程_pix4d处理流程
  7. vep文件如何转换mp4_vep文件如何转换mp4?vep转mp4的操作演示简单又小白
  8. Ubuntu安装显卡驱动
  9. Oracle数据库资料收藏
  10. 工程制图与计算机绘图教学视频,工程制图与计算机绘图(西电版)第1章_制图的基本知识教材教学课件.ppt...