python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...
PS:
前提
1. 安裝好webdriver下python實現(xiàn)的環(huán)境
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()
#判斷元素是否出現(xiàn)
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
#通過xpath匹配對應的文本元素,判斷文本元素是否出現(xiàn)
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
#測試用例--發(fā)送一封測試郵件
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"發(fā)給自己").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)
#點擊發(fā)送
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()
總結
以上是生活随笔為你收集整理的python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天在cnblog开博啦
- 下一篇: python max((1、2、3)*2