python+selenium實(shí)現(xiàn)QQ郵箱自動(dòng)發(fā)送功能
python實(shí)現(xiàn)從登錄到自動(dòng)發(fā)送qq郵件,供大家參考,具體內(nèi)容如下
qq郵箱登錄注意問(wèn)題
賬戶密碼登錄框是寫(xiě)在一個(gè)iframe上的,所以我們要先進(jìn)入iframe中才能定位到下面的兩個(gè)輸入框和登錄按鈕。從下圖我們可以看到iframe=login_frame,我們可以是用driver.switch.to_frame(“l(fā)ogin_frame”)進(jìn)入iframe中。接下來(lái)的兩個(gè)輸入框和登錄按鈕都有id屬性,我們只需要用driver.find_element_by_id(“xxx”)就可以定位到元素。
記得退出iframe,不然定位后面的所有元素都會(huì)失?。ㄇ杏洠?,退出iframe的話我們可以寫(xiě)driver.switch_to_default_content()來(lái)實(shí)現(xiàn)(個(gè)人發(fā)現(xiàn)to后面用“.”還是“_”符號(hào),都可以將后面顯示出來(lái))。大家可以嘗試下,把這句話省略,接著定位下面的元素。
主頁(yè)面注意事項(xiàng)
主頁(yè)面上左上角的“寫(xiě)信”按鈕,你右擊是不會(huì)顯示查看元素的,第一種方法,我們首先在頁(yè)面其他地方右擊,接著選中查看元素,然后用查看器左邊的那個(gè)鼠標(biāo)按鈕去點(diǎn)擊“寫(xiě)信”按鈕。就可以查看到。第二種方法,直接根據(jù)“寫(xiě)信”兩個(gè)字去定位元素。我們可以這樣driver.find_element_by_link_text(“寫(xiě)信”)
寫(xiě)信頁(yè)面注意事項(xiàng)
寫(xiě)信頁(yè)面都寫(xiě)在iframe里面,所以要進(jìn)入iframe中,然后定位收件人的輸入框,我們可以從下面的頁(yè)面代碼中看到class的值有很多地方都用到(不是唯一),所有我們相對(duì)路徑的方法,driver.find_element_by_xpath("http://*[@id=“toAreaCtrl”]//div[2]/input")。這樣就可以解決了。
文下面的文本框注意四點(diǎn),第一點(diǎn),文本框在一個(gè)iframe中;第二點(diǎn),文本框沒(méi)有任何的屬性值,所以我們可以使用HTML標(biāo)簽名定位,driver.find_element_by_tag_name(“body”);第三點(diǎn)文本框需要先點(diǎn)擊(click),在編寫(xiě)(send_keys),如果沒(méi)有先點(diǎn)擊在編寫(xiě),那么你send_keys(“xxxx”)內(nèi)容會(huì)放在主題后面的文本框中。第四點(diǎn),退出iframe,然后再進(jìn)入iframe=“mainFrame”,因?yàn)橥顺龅脑捑褪撬械膇frame都退出。
完整腳本
from selenium import webdriver import unittest,time,traceback from selenium.common.exceptions import TimeoutException,NoSuchElementException class TestDemo(unittest.TestCase): def setUp(self): self.driver=webdriver.Firefox(executable_path='f:\\geckodriver') def test_sendqqemail(self): try: url = 'https://mail.qq.com/' self.driver.get(url) self.driver.maximize_window() self.driver.switch_to_frame("login_frame") self.driver.find_element_by_id("u").send_keys("用戶名") self.driver.find_element_by_id("p").send_keys("密碼") self.driver.find_element_by_id("login_button").click() time.sleep(5) self.driver.switch_to.default_content() #退出iframe,如果沒(méi)這句話后面的元素定位都會(huì)出錯(cuò) self.driver.find_element_by_id('composebtn').click() #寫(xiě)信模塊都在iframe=mainFrame頁(yè)面上 self.driver.switch_to_frame("mainFrame") time.sleep(3) self.driver.find_element_by_xpath("http://*[@id='toAreaCtrl']/div[2]/input").send_keys("收件人") #定位主題 self.driver.find_element_by_xpath('//input[@id="subject"]').send_keys("主題") #正文編寫(xiě)iframe中 self.driver.switch_to_frame(self.driver.find_element_by_class_name("qmEditorIfrmEditArea")) #self.driver.find_element_by_xpath("/html/body").send_keys('你好,再見(jiàn)') #定位正文 content=self.driver.find_element_by_tag_name("body") #必須click(),不然會(huì)寫(xiě)到主題里面 content.click() content.send_keys("正文內(nèi)容") time.sleep(3) self.driver.switch_to.default_content() self.driver.switch_to_frame("mainFrame") #定位發(fā)送按鈕 self.driver.find_element_by_xpath('//a[.="發(fā)送"]').click() except TimeoutException: print("顯示等待頁(yè)面元素超時(shí)") except NoSuchElementException: print("尋找頁(yè)面元素不存在",traceback.print_exc()) except Exception: print(traceback.print_exc()) def tearDown(self): self.driver.quit() if __name__=="__main__": unittest.main()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python使用selenium登錄QQ郵箱(附帶滑動(dòng)解鎖)
- python實(shí)現(xiàn)QQ郵箱/163郵箱的郵件發(fā)送
- Python發(fā)送郵件功能示例【使用QQ郵箱】
- Python+selenium實(shí)現(xiàn)自動(dòng)循環(huán)扔QQ郵箱漂流瓶
- python利用smtplib實(shí)現(xiàn)QQ郵箱發(fā)送郵件
- 淺談Python用QQ郵箱發(fā)送郵件時(shí)授權(quán)碼的問(wèn)題
- python3利用smtplib通過(guò)qq郵箱發(fā)送郵件方法示例
- Python利用QQ郵箱發(fā)送郵件的實(shí)現(xiàn)方法(分享)
- Python使用QQ郵箱發(fā)送Email的方法實(shí)例
- Python實(shí)現(xiàn)給qq郵箱發(fā)送郵件的方法
- python登錄QQ郵箱發(fā)信的實(shí)現(xiàn)代碼
- python3+selenium實(shí)現(xiàn)qq郵箱登陸并發(fā)送郵件功能
相關(guān)文章
Python手動(dòng)或自動(dòng)協(xié)程操作方法解析
這篇文章主要介紹了Python手動(dòng)或自動(dòng)協(xié)程操作方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06詳解pycharm連接不上mysql數(shù)據(jù)庫(kù)的解決辦法
這篇文章主要介紹了詳解pycharm連接不上mysql數(shù)據(jù)庫(kù)的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01python list元素為tuple時(shí)的排序方法
下面小編就為大家分享一篇python list元素為tuple時(shí)的排序方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04TensorFlow通過(guò)文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn)
今天小編就為大家分享一篇TensorFlow通過(guò)文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02不管你的Python報(bào)什么錯(cuò),用這個(gè)模塊就能正常運(yùn)行
說(shuō)到python強(qiáng)大的地方,那真是太多了,優(yōu)雅、簡(jiǎn)潔、豐富且強(qiáng)大的第三方庫(kù),開(kāi)發(fā)速度快,活躍度高等,本文講到的就是其中一個(gè)模塊,用了它,再也不用擔(dān)心代碼不能運(yùn)行了2018-09-09Python繪圖之實(shí)現(xiàn)繪制極坐標(biāo)圖像
這篇文章主要介紹了如何利用python繪制極坐標(biāo)圖像,文中的示例代碼講解詳細(xì),具有一定的的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08Pytorch使用PIL和Numpy將單張圖片轉(zhuǎn)為Pytorch張量方式
這篇文章主要介紹了Pytorch使用PIL和Numpy將單張圖片轉(zhuǎn)為Pytorch張量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Python OpenCV中的resize()函數(shù)的使用
這篇文章主要介紹了Python OpenCV中的resize()函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06