這里模擬登陸會(huì)用到selenium這個(gè)自動(dòng)化測(cè)試的工具,先介紹一下這個(gè)工具司蔬。
selenium
selenium是一個(gè)web的自動(dòng)化測(cè)試工具它掂,最初是為網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的簇秒,selenium可以直接運(yùn)行在瀏覽器上晶密,它支持所有主流的瀏覽器擒悬,可以接收指令,讓瀏覽器自動(dòng)加載頁(yè)面惹挟,獲取需要的數(shù)據(jù)茄螃,甚至頁(yè)面截屏
selenium的簡(jiǎn)單實(shí)用
首先selenium需要進(jìn)行安裝缝驳,安裝比較簡(jiǎn)單连锯。直接通過(guò)pip install selenium
就可以了。
selenium安裝完成之后還需要下載對(duì)應(yīng)的驅(qū)動(dòng)用狱,這里需要一定要下載與瀏覽器對(duì)應(yīng)的驅(qū)動(dòng)运怖,比如我的谷歌瀏覽器的版本是73.0.3683.103,那么就要下載對(duì)應(yīng)版本的selenium的驅(qū)動(dòng)夏伊,這里給大家兩個(gè)網(wǎng)站摇展。
selenium下載地址
http://chromedriver.storage.googleapis.com/index.html
Selenium對(duì)瀏覽器支持的版本
http://www.cnblogs.com/iceb/p/7195876.html
接下來(lái)以百度為例講解selenium的簡(jiǎn)單使用
from selenium import webdriver
import time
wd = webdriver.Chrome()
# 設(shè)置窗口大小
# wd.set_window_size(1280,800)
# 全屏
wd.maximize_window()
# 輸入網(wǎng)址
wd.get('http://www.baidu.com')
# 截圖
wd.save_screenshot("baidu.png")
# 找到輸入框
kw = wd.find_element_by_id('kw')
# 在輸入框中輸入酒店
kw.send_keys("酒店")
# 點(diǎn)擊百度一下
wd.find_element_by_id('su').click()
time.sleep(3)
wd.quit()
上面的案例中,如果沒(méi)有把selenium添加到系統(tǒng)環(huán)境變量中程序會(huì)報(bào)錯(cuò)溺忧。這里可以指定路徑來(lái)使用executable_path='./driver/chromedriver.exe'
模擬登陸微博PC端
driver = webdriver.Chrome()
# 隱式等待
driver.implicitly_wait(10)
driver.set_window_size(1200,1000)
driver.get('https://weibo.com/')
# 填寫(xiě)賬號(hào)
driver.find_element_by_id('loginname').send_keys('賬號(hào)')
# 通過(guò)xpath找到密碼的輸入框
driver.find_element_by_xpath("http://div[@class='info_list password']/div/input").send_keys(pwd)
# 通過(guò)xpath找到登陸按鈕進(jìn)行點(diǎn)擊
driver.find_element_by_xpath("http://div[@class='info_list login_btn']/a").click()
這里賬號(hào)密碼可以寫(xiě)在配置文件中
加載配置文件
from configparser import ConfigParser
target = ConfigParser()
target.read('test.ini',encoding='utf-8')
pwd = target.get('weibo','password')
test.ini文件
[weibo]
password = '密碼'
模擬登陸微博移動(dòng)端
這里用PC端模擬移動(dòng)端咏连,可以用谷歌瀏覽器來(lái)模擬,F(xiàn)12打開(kāi)控制臺(tái)管理工具
接下來(lái)大家可以發(fā)現(xiàn)鲁森,移動(dòng)端要比PC端簡(jiǎn)單的多祟滴,因?yàn)樗械臉?biāo)簽都有ID。代碼如下:
driver.get('https://passport.weibo.cn/signin/login')
driver.find_element_by_id('loginName').send_keys('賬號(hào)')
driver.find_element_by_id('loginPassword').send_keys(pwd)
driver.find_element_by_id('loginAction').click()
driver.find_element_by_id("getCode").click()