溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python+selenium實現(xiàn)QQ郵箱自動發(fā)送功能

發(fā)布時間:2020-10-05 02:06:01 來源:腳本之家 閱讀:184 作者:知否,知否 欄目:開發(fā)技術(shù)

python實現(xiàn)從登錄到自動發(fā)送qq郵件,供大家參考,具體內(nèi)容如下

qq郵箱登錄注意問題

賬戶密碼登錄框是寫在一個iframe上的,所以我們要先進入iframe中才能定位到下面的兩個輸入框和登錄按鈕。從下圖我們可以看到iframe=login_frame,我們可以是用driver.switch.to_frame(“l(fā)ogin_frame”)進入iframe中。接下來的兩個輸入框和登錄按鈕都有id屬性,我們只需要用driver.find_element_by_id(“xxx”)就可以定位到元素。
記得退出iframe,不然定位后面的所有元素都會失?。ㄇ杏洠顺鰅frame的話我們可以寫driver.switch_to_default_content()來實現(xiàn)(個人發(fā)現(xiàn)to后面用“.”還是“_”符號,都可以將后面顯示出來)。大家可以嘗試下,把這句話省略,接著定位下面的元素。

python+selenium實現(xiàn)QQ郵箱自動發(fā)送功能

主頁面注意事項

主頁面上左上角的“寫信”按鈕,你右擊是不會顯示查看元素的,第一種方法,我們首先在頁面其他地方右擊,接著選中查看元素,然后用查看器左邊的那個鼠標(biāo)按鈕去點擊“寫信”按鈕。就可以查看到。第二種方法,直接根據(jù)“寫信”兩個字去定位元素。我們可以這樣driver.find_element_by_link_text(“寫信”)

寫信頁面注意事項

寫信頁面都寫在iframe里面,所以要進入iframe中,然后定位收件人的輸入框,我們可以從下面的頁面代碼中看到class的值有很多地方都用到(不是唯一),所有我們相對路徑的方法,driver.find_element_by_xpath("http://*[@id=“toAreaCtrl”]//div[2]/input")。這樣就可以解決了。

文下面的文本框注意四點,第一點,文本框在一個iframe中;第二點,文本框沒有任何的屬性值,所以我們可以使用HTML標(biāo)簽名定位,driver.find_element_by_tag_name(“body”);第三點文本框需要先點擊(click),在編寫(send_keys),如果沒有先點擊在編寫,那么你send_keys(“xxxx”)內(nèi)容會放在主題后面的文本框中。第四點,退出iframe,然后再進入iframe=“mainFrame”,因為退出的話就是所有的iframe都退出。

完整腳本

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,如果沒這句話后面的元素定位都會出錯
  self.driver.find_element_by_id('composebtn').click()
  #寫信模塊都在iframe=mainFrame頁面上
  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("主題")
  #正文編寫iframe中
  self.driver.switch_to_frame(self.driver.find_element_by_class_name("qmEditorIfrmEditArea"))
  #self.driver.find_element_by_xpath("/html/body").send_keys('你好,再見')
  #定位正文
  content=self.driver.find_element_by_tag_name("body")
  #必須click(),不然會寫到主題里面
  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("顯示等待頁面元素超時")
 except NoSuchElementException:
  print("尋找頁面元素不存在",traceback.print_exc())
 except Exception:
  print(traceback.print_exc())

 def tearDown(self):
 self.driver.quit()


 if __name__=="__main__":
 unittest.main()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI