1.百度登錄
哈,學selenium,第一個想法就是拿百度登錄試試,是的沒錯,就是它了!
from selenium import webdriver #導入webdriver
import time #導入時間模塊
b = webdriver.Firefox() #打開火狐瀏覽器
b.maximize_window() #窗口最大化
b.get('http://www.baidu.com') #打開百度首頁
time.sleep(2) #強制等待兩秒,等網頁完全打開
b.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[7]').click() #打開登錄框
time.sleep(2) #強制等待兩秒,等登錄框彈出
b.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click() #切換到賬號密碼登錄
b.find_element_by_name('userName').send_keys('12345678') #輸入賬號
b.find_element_by_name('password').send_keys('12345678') #輸入密碼
b.find_element_by_name('memberPass').click() #取消密碼保存
b.find_element_by_id('TANGRAM__PSP_10__submit').click() #登錄
結果:點擊登錄后彈出手機號驗證,所以登錄未完成,不過過程代碼應該是沒錯
2.淘寶
在百度受挫之后,第二個想到的就是淘寶。
from selenium import webdriver #導入webdriver
import time #導入時間
from selenium.webdriver.common.keys import Keys #導入Keys
b = webdriver.Firefox() #打開火狐瀏覽器
b.maximize_window() #窗口最大化
b.get('https://www.taobao.com/') #打開淘寶網
time.sleep(2) #強制等待2秒,等網頁打開
b.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click() #點擊跳轉登錄頁面
time.sleep(2) #強制等待2秒,進入登錄頁面
b.find_element_by_id('J_Quick2Static').click() #選擇賬號密碼登錄模式
time.sleep(2) #強制等待2秒,等登錄窗口打開
b.switch_to.active_element.send_keys('12345678') #輸入賬號
b.find_element_by_name('TPL_password').send_keys('12345678') #輸入密碼
b.find_element_by_id('J_Quick2Static').click() #點擊登錄
結果:又失敗了,會出現一個滑塊驗證,我手工把滑塊完成,顯示“哎呀,出錯了,點擊刷新再來一次(error:N18f4f)”,刷新后再次操作滑塊,依然報錯。
后來百度得知,是淘寶網站監測到使用了自動化工具,所以這個滑塊是無法完成的……
另外補充一點,賬號輸入框元素定位成功,但是無法輸入,顯示‘element is not reachable by keyboard’,有人說是firefox瀏覽器問題,於是使用另外的方式去輸入了。
browser.switch_to.active_element.send_keys('****')
按照字面意思理解,應該是獲取當前活動狀態的元素,直接操作吧。
總而言之,雖然失敗了,但是真不是我的問題,自動化工具的監測,還不是我這樣一個小萌新能解決的,希望以后能搞定吧。
3.QQ郵箱
三大流氓 BAT 啊,BA 都試過了,輪到 T 了。
from selenium import webdriver #導入webdriver
import time #導入時間模塊
b = webdriver.Firefox() #打開火狐瀏覽器
b.maximize_window() #窗口最大化
b.get('https://mail.qq.com/') #進入qq郵箱首頁
time.sleep(2) #強制等待兩秒
b.switch_to.frame('login_frame') #轉入登錄模塊所在的 frame
b.find_element_by_id('switcher_plogin').click() #點擊進入賬號密碼登錄模式
time.sleep(2) #強制等待兩秒
b.find_element_by_id('u').send_keys('12345678@qq.com') #輸入賬號
b.find_element_by_id('p').send_keys('12345678') #輸入密碼
b.find_element_by_id('p_low_login_enable').click() #點擊選擇記住密碼:練習時最好別選,不然很容易觸發驗證
b.find_element_by_id('login_button').click() #登錄
結果:登錄成功了。
總結:登錄驗證確實很頭疼,不過初入門的也不需要對自己要求這么高,一般中小型公司自己的網站應該都沒有反自動化工具的功能吧,基本上提供個賬號+密碼就可以登錄了。