selenium+python實(shí)現(xiàn)自動化登錄的方法
Selenium Python 提供了一個簡單的API 便于我們使用 Selenium WebDriver編寫 功能/驗(yàn)收測試。 通過Selenium Python的API,你可以直觀地使用所有的 Selenium WebDriver 功能 。Selenium Python提供了一個很方便的接口來驅(qū)動 Selenium WebDriver , 例如Firefox、Chrome、Ie,以及Remote,目前支持的python版本有2.7或3.2以上.
selenium 可以自動化測試、搶票、爬蟲等工作。初次了解,現(xiàn)在模擬登錄百度——即自動打開瀏覽器、自動輸入賬號密碼并提交進(jìn)行登錄。
工作需要實(shí)現(xiàn)一個微博自動登錄的操作,在網(wǎng)上差了一些資料,決定使用selenium+python實(shí)現(xiàn)
selenium 是一個web的自動化測試工具,主流一般配合java或者python使用,我這里使用的是python,可支持的瀏覽器基本包括所有主流瀏覽器IE、Mozilla Firefox、Google Chrome。
安裝過程不再贅述,但是后續(xù)使用時,發(fā)現(xiàn)很多報(bào)錯與版本兼容性有關(guān),因此這里列出可用的版本搭配:
python2.7
selenium3.0.2
火狐驅(qū)動geckodriver.exe 版本v0.14.0 (使用高版本會出現(xiàn)異常報(bào)錯)
火狐瀏覽器52.0.2 (32 位) (版本太低或53的最新版本,都會報(bào)錯)
#encoding=utf-8
from selenium import webdriver
import time
import os
#模擬登陸weibo
def getCookies(weibo):
""" 獲取Cookies """
cookies = []
driver = webdriver.Firefox()
time.sleep(3) #sleep一下,否則有可能報(bào)錯
driver.get("https://weibo.com/login/")
#cur_path=os.getcwd()
#fileSuc = open(cur_path+"/login.html", 'w')
#fileSuc.write(driver.page_source)
#用戶名 密碼
elem_user = driver.find_element_by_xpath('//input[@id="loginname"]')
elem_user.send_keys('*****@163.com') #瀏覽器版本不匹配的時候這里可能報(bào)錯
elem_pwd = driver.find_element_by_xpath('//input[@type="password"]')
elem_pwd.send_keys('*****')
commit = driver.find_element_by_xpath('//a[@node-type="submitBtn"]')
commit.click()
time.sleep(3)
#fileSuc1 = open(cur_path+"/weibo2.html", 'w')
#fileSuc1.write(driver.page_source)
#print driver.title
#登錄成功后獲取cookie
cookie = {}
if "微博-隨時隨地發(fā)現(xiàn)新鮮事" in driver.title:
for elem in driver.get_cookies():
cookie[elem["name"]] = elem["value"]
if len(cookie) > 0:
logger.warning("Get Cookie Successful: %s" % account)
cookies.append(cookie)
continue
else:
logger.warning("Get Cookie Failed: %s!" % account)
driver.close()
driver.quit()
return cookies
cookies = getCookies(myWeiBo)
print cookies
logger.warning("Get Cookies Finish!( Num:%d)" % len(cookies))
find_element_by_xpath用來定位控件的位置,定位不到的時候,可以把網(wǎng)頁的代碼保存下來看看是否有對應(yīng)的控件,如果是安全控件或者登錄在js里實(shí)現(xiàn),這種方法是獲取不到的。
另外還有find_element_by_name、find_element_by_id的方法,但是我使用的時候出現(xiàn)找不到情況,懷疑是瀏覽器版本不匹配的原因。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)實(shí)時視頻流播放代碼實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)實(shí)時視頻流播放代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
Python實(shí)現(xiàn)Windows上氣泡提醒效果的方法
這篇文章主要介紹了Python實(shí)現(xiàn)Windows上氣泡提醒效果的方法,涉及Python針對windows窗口操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06
pycharm運(yùn)行OpenCV項(xiàng)目踩坑記錄
本文主要介紹了在PyCharm中運(yùn)行OpenCV項(xiàng)目時遇到的問題及其解決方法,具有一定的參考價值,感興趣的可以了解一下2025-03-03
使用python爬取微博數(shù)據(jù)打造一顆“心”
這篇文章主要介紹了使用python基于微博數(shù)據(jù)打造一顆“心”,作為程序員,我準(zhǔn)備了一份特別的禮物,用以往發(fā)的微博數(shù)據(jù)打造一顆“愛心”,我想她一定會感動得哭了吧,需要的朋友可以參考下2019-06-06

