python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...

这篇博客介绍了如何使用Python的Selenium库结合AutoIt工具,实现在139邮箱中发送带有附件的邮件。首先确保安装了必要的环境和软件,然后通过编写Python代码模拟登录139邮箱,切换到写信页面的iframe,利用AutoIt进行文本输入和文件上传操作。最后,点击发送按钮完成邮件发送。
摘要由CSDN通过智能技术生成

PS:

前提

1. 安装好webdriver下python实现的环境

2. 安装好Autoit(默认安装就可以了)

3. 另外需要一个139邮箱账号,脚本运行时上传的图片在附件里面

#coding:cp936

"""

Action:WebDriver + Python 调用AutoIt例子(139邮箱写信页的附件上传操作)

Author:深圳-横放

Date:2014-07-02

"""

#调用autoit所需的模块

import win32api, win32pdhutil, win32con

import win32com.client

from win32com.client import Dispatch

#webdriver的模块

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import Select

from selenium.common.exceptions import NoSuchElementException

import unittest, time, re ,sys ,os

class Untitled(unittest.TestCase):

username = "XXXXX@139.com" #账号

password = "XXXXX" #密码

#初始化

def setUp(self):

self.driver = webdriver.Chrome()

self.driver.implicitly_wait(30)

self.base_url = "http://mail.139.com"

self.verificationErrors = []

self.accept_next_alert = True

self.driver.maximize_window()

#判断元素是否出现

def is_element_present(self, how, what):

try: self.driver.find_element(by=how, value=what)

except NoSuchElementException, e: return False

return True

#通过xpath匹配对应的文本元素,判断文本元素是否出现

def is_text_present(self,what):

#Now = datetime.now()

try:

if what=="":

pass

else:

self.driver.find_element_by_xpath("//*[contains(.,'%s')]"%what)

except NoSuchElementException, e:

#elapsedtime1 = datetime.now()-Now

#print "waste time: "+str(elapsedtime1.seconds)+"."+str(elapsedtime1.microseconds)

return False

#elapsedtime1 = datetime.now()-Now

#print "waste time: "+str(elapsedtime1.seconds)+"."+str(elapsedtime1.microseconds)

return True

#测试用例--发送一封测试邮件

def test_untitled(self):

driver = self.driver

driver.get("http://mail.10086.cn/")

#登录

driver.find_element_by_id("txtUserName").clear()

driver.find_element_by_id("txtUserName").send_keys(self.username.split('@')[0])

driver.find_element_by_id("txtPassword").clear()

driver.find_element_by_id("txtPassword").send_keys(self.password)

driver.find_element_by_id("loginBtn").click()

#写信页打开

driver.find_element_by_css_selector("#btn_compose > span").click()#打开写信页

time.sleep(2)

#选择iframe

iframe_xpath = "//iframe[contains(@id,'compose_')]"#写信页所在的iframe的xpath路径,通过火狐浏览器的firebug插件可以查看到是在一个iframe的页面内

iframe = self.driver.find_element_by_xpath(iframe_xpath)

self.driver.switch_to_frame(iframe)

time.sleep(1)

#编写邮件内容

self.driver.find_element_by_link_text(u"发给自己").click()

mysubject = "这是一封测试邮件! "

mycontent = "这是一封测试邮件! "*5

#这里有个小技巧--对于不能正常输入文本的输入框,可以先用webdriver点击,然后再用AutoIt的send方法进行输入

self.driver.find_element_by_css_selector("input.fl.addrText-input").click()

autoit.Send(mysubject)

autoit.MouseClick("left",448,452,1)#正文-坐标可以通过autoit自带的Autoit Window info来查看

autoit.Send(mycontent)

self.driver.find_element_by_id("uploadInput").click()#点击附件上传按钮

#autoit.MouseClick("left", 288, 326, 1)#点击附件上传按钮--用上面的代码替代

str_filepath = os.path.join(os.getcwd() + "\\1M.png") #获取附件路径

#print str_filepath

autoit.WinWait(u"打开", "", 5)

autoit.WinActivate(u"打开")

autoit.ControlSetText(u"打开","","[CLASS:Edit; INSTANCE:1]",str_filepath)

autoit.ControlClick(u"打开","",u"保存(&S)")

autoit.ControlClick(u"打开","",u"打开(&O)") #附件上传动作

#等待附件上传完成

while self.is_text_present("(1,031.79K)") == False:

sleep(1)

#点击发送

self.driver.find_element_by_xpath("//*[@id=\"topSend\"]/span").click()

time.sleep(10)

#测试清理

def tearDown(self):

self.driver.quit()

self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":

#调用autoit3

try:

autoit = Dispatch("AutoItX3.Control")

except:

print >> sys.stderr, u'AutoItX3 加载失败了!'

unittest.main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值