您好,登錄后才能下訂單哦!
python實現從登錄到自動發送qq郵件,供大家參考,具體內容如下
qq郵箱登錄注意問題
賬戶密碼登錄框是寫在一個iframe上的,所以我們要先進入iframe中才能定位到下面的兩個輸入框和登錄按鈕。從下圖我們可以看到iframe=login_frame,我們可以是用driver.switch.to_frame(“login_frame”)進入iframe中。接下來的兩個輸入框和登錄按鈕都有id屬性,我們只需要用driver.find_element_by_id(“xxx”)就可以定位到元素。
記得退出iframe,不然定位后面的所有元素都會失敗(切記),退出iframe的話我們可以寫driver.switch_to_default_content()來實現(個人發現to后面用“.”還是“_”符號,都可以將后面顯示出來)。大家可以嘗試下,把這句話省略,接著定位下面的元素。
主頁面注意事項
主頁面上左上角的“寫信”按鈕,你右擊是不會顯示查看元素的,第一種方法,我們首先在頁面其他地方右擊,接著選中查看元素,然后用查看器左邊的那個鼠標按鈕去點擊“寫信”按鈕。就可以查看到。第二種方法,直接根據“寫信”兩個字去定位元素。我們可以這樣driver.find_element_by_link_text(“寫信”)
寫信頁面注意事項
寫信頁面都寫在iframe里面,所以要進入iframe中,然后定位收件人的輸入框,我們可以從下面的頁面代碼中看到class的值有很多地方都用到(不是唯一),所有我們相對路徑的方法,driver.find_element_by_xpath("http://*[@id=“toAreaCtrl”]//div[2]/input")。這樣就可以解決了。
文下面的文本框注意四點,第一點,文本框在一個iframe中;第二點,文本框沒有任何的屬性值,所以我們可以使用HTML標簽名定位,driver.find_element_by_tag_name(“body”);第三點文本框需要先點擊(click),在編寫(send_keys),如果沒有先點擊在編寫,那么你send_keys(“xxxx”)內容會放在主題后面的文本框中。第四點,退出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("正文內容") time.sleep(3) self.driver.switch_to.default_content() self.driver.switch_to_frame("mainFrame") #定位發送按鈕 self.driver.find_element_by_xpath('//a[.="發送"]').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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。