国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

selenium+python實現自動登陸QQ郵箱并發送郵件功能

2024-09-09 19:03:17
字體:
來源:轉載
供稿:網友

本期做一個selenium詳細實例,會把我在元素定位中遇到的一些阻塞和經驗分享給大家。
(瀏覽器為Chrome)

(如果只需要最終的完整代碼,請直接跳轉到文章最后)

瀏覽器打開QQ郵箱登錄網址

QQ郵箱登錄地址為:https://mail.qq.com/

 from selenium import webdriver import time zhengyi = webdriver.Chrome() zhengyi.get('https://mail.qq.com/')

這一步沒有遇到問題,至于為什么導入時間庫,后面會說。

元素定位,輸入QQ賬號和QQ密碼

手動進入QQ郵箱登錄網頁,按下F12打開開發者工具,點擊查看元素,選擇元素:

可以看到QQ賬號輸入框的id、name等屬性,都是可以直接拿來定位的好選擇。
我這里選擇最通用的xpath方法來定位,id=‘u',并用send事件輸入QQ賬號

(也可以用zhengyi.find_element_by_id(‘u')來定位,代碼更清晰,不過我個人習慣采用通用的xpath)

zhengyi.find_element_by_xpath('//*[@]').send_keys("XXXXXXXXX")

同理,QQ密碼元素屬性id=‘p',同樣定位方法

zhengyi.find_element_by_xpath('//*[@]').send_keys("XXXXXXXX")

再同理,登錄按鈕元素屬性id=‘login_button',這里不需要發送信息,所以選擇click點擊事件

zhengyi.find_element_by_xpath('//*[@]').click()

好的,原則上到此為止,運行pycharm應該是能夠輸入賬號和密碼,并登陸成功。

but事情沒有那么簡單,運行后發現,selenium報錯,無法找到id為u的元素。

進過仔細觀察,發現是frame嵌套頁面在作怪。

我們可以這樣理解,每一個網頁都是一個父類的frame,從我們訪問這個網址開始,就已經進入了這個父類frame嵌套。顧名思義,有父即有子。frame(父)里嵌套了iframe(子),如果我們要定位的元素在iframe里,那么我們需要先切換至iframe。
iframe也是有自己的元素屬性的,selenium也提供了switch方法供我們使用

重新F12往上找iframe信息,可以看到被iframe嵌套了,id和name都是‘login_frame'

在定位元素之前,先輸入如下代碼:

zhengyi.switch_to.frame("login_frame")

這樣就切換到iframe了,再繼續之前的元素定位,即可成功。
這一步的完整代碼為:

 # 定位login_frame zhengyi.switch_to.frame("login_frame") zhengyi.find_element_by_xpath('//*[@]').click() # 定位賬號、密碼,并輸入 zhengyi.find_element_by_xpath('//*[@]').send_keys("839811794") zhengyi.find_element_by_xpath('//*[@]').send_keys("199306zy") # 定位登錄按鈕 zhengyi.find_element_by_xpath('//*[@]').click()

這個時候網頁已經可以成功QQ郵箱。

元素定位,寫信界面

繼續,郵箱登錄成功之后,來到寫信界面,按照常規操作,我們需要先點擊左上角寫信按鈕,展開具體寫信界面

同樣的方法,F12操作起來,查看寫信按鈕,元素定位為id=‘composebtn',發送點擊事件

 # 定位寫信按鈕 zhengyi.find_element_by_xpath('//*[@]').click()

這個時候調試程序,網頁成功打開結果為selenium定位不到id為composebtn的元素。
這個時候就暴露了在上一個環節中出現的問題,之前的代碼將嵌套切換到了iframe的login_frame中,而此時的寫信元素,不在iframe中,所以在定位之前,需要先離開這個嵌套,返回到主文檔中

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙洋县| 德钦县| 闽侯县| 涞源县| 博客| 石渠县| 邵武市| 左云县| 拉萨市| 桐乡市| 朝阳区| 德兴市| 栾川县| 霍山县| 鄂尔多斯市| 五指山市| 喜德县| 达孜县| 林州市| 潢川县| 普格县| 读书| 玉屏| 尼木县| 赤水市| 临江市| 沙坪坝区| 杨浦区| 和政县| 宝丰县| 涞水县| 鹤庆县| 扎囊县| 当涂县| 桃园县| 延寿县| 平利县| 林西县| 巴马| 重庆市| 屯昌县|