import time
import datetime
from selenium import webdriver
from selenium.webdriver.support.wait import webdriverwait # 等待頁面載入某些元素
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import by
def login(user, pwd):
""" 登入163郵箱 """
# 由於可以掃碼登入,而我們選擇使用者名稱和密碼登入,所以,要點選 密碼登入
time.sleep(1)
wait.until(ec.presence_of_element_located((by.id, 'switchaccountlogin'))).click()
# 進入iframe,因為有多個iframe,所以獲取的是陣列,在分析頁面後,陣列0索引的iframe是登陸的iframe
time.sleep(3)
iframe = driver.find_elements_by_tag_name('iframe')
# print(iframe)
'''[
, , , ]
'''driver.switch_to.frame(iframe[0])
# 獲取使用者名稱和密碼標籤,並輸入對應的值
time.sleep(1)
driver.find_element_by_class_name('dlemail').send_keys(user)
time.sleep(2)
driver.find_element_by_class_name('dlpwd').send_keys(pwd)
time.sleep(2)
driver.find_element_by_id('dologin').click()
def send_mail():
""" 傳送163郵件,需要傳遞163的使用者名稱和密碼,收件人和內容 """
try:
# 第1步,執行登陸
login(user, pwd)
# 第2步,點選寫信按鈕
wait.until(ec.presence_of_element_located((by.id, '_mail_component_24_24'))).click()
# driver.find_element_by_id('_mail_component_24_24').click()
# 第3步,獲取收件人,主題,內容框標籤,寫入內容
time.sleep(1)
# 3.1 填寫收件人
wait.until(ec.presence_of_element_located((by.class_name, 'nui-editableaddr-ipt'))).send_keys(addr) # 收件人
time.sleep(2)
# 3.2 填寫主題
title = driver.find_elements_by_class_name('nui-ipt-input')
# print(11111, title)
title[2].send_keys(theme) # 主題
# title.send_keys(theme) # 主題
# 3.3 進入content所在iframe,填寫內容
time.sleep(1)
driver.switch_to.frame(content_iframe)
# 雖然nui-scroll這個類名在整個網頁中有多個,但是這個iframe中只有乙個,所以我們直接send_keys就行
nui_scroll = wait.until(ec.presence_of_element_located((by.class_name, 'nui-scroll')))
# print(22222222, nui_scroll) # nui_scroll.send_keys(content)
# 第4步,因為傳送按鈕不在此時的iframe中,所以要先退出iframe,才能點選傳送按鈕
# 4.1 退出iframe
time.sleep(1)
driver.switch_to.default_content()
# 4.2 點選傳送按鈕
time.sleep(1)
# 這個傳送按鈕的類名有多個,最好for迴圈一下,因為有坑,傳送按鈕是第3個,前面還有兩個空標籤,但是前端檢查中看不到
driver.find_elements_by_class_name('nui-btn-text')[2].click()
finally:
# 關閉瀏覽器
time.sleep(3)
driver.quit()
# 截止2019-6-11,**無誤
if __name__ == '__main__':
from getpass import getpass
pwd = getpass('密碼: ') # 填寫你的163密碼
# 獲取driver
driver = webdriver.chrome()
wait = webdriverwait(driver, 10)
# driver.maximize_window()
# 發請求
driver.get('')
addr = "[email protected]" # 收件人
theme = '我是你爸爸' # 主題
content = '天不生我李淳罡,劍道萬古如長夜 ————\n{}'.format(datetime.datetime.now()) # 傳送內容
send_mail()
瀏覽器相容性
瀏覽器相容性是乙個很長久的話題,之所以前端需要面對瀏覽器相容性,是因為使用者的環境有不同的平台,不同的瀏覽器。不同的廠商之間為了相互競爭,對標準的實現不一樣。不同的瀏覽器有不同的核心。即使同乙個瀏覽器也有不同的版本,不同的版本對同一特性的支援情況也不盡相同。也可能某個瀏覽器的某個版本針對某個特性存在...
瀏覽器相容性
所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同一段 有不同的解析,造成頁面顯示效果不統一的情況。在大多數情況下,我們的需求是,無論使用者用什麼瀏覽器來檢視我們的 或者登陸我們的系統,都應該是統一的顯示效果。所以瀏覽器的相容性問題是前端開發人員經常會碰到和必須要解決的問題。在學習瀏覽器相容性之前,我...
瀏覽器相容性
trident ie核心 gecko firefox 核心 webkit chrome,safari blink webkit 的分支 presto 是挪威產瀏覽器 opera 的 前任 核心,為何說是 前任 因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。移動端的瀏覽器核心主要說...