selenium+python實現(xiàn)自動化登錄的方法
Selenium Python 提供了一個簡單的API 便于我們使用 Selenium WebDriver編寫 功能/驗收測試。 通過Selenium Python的API,你可以直觀地使用所有的 Selenium WebDriver 功能 。Selenium Python提供了一個很方便的接口來驅(qū)動 Selenium WebDriver , 例如Firefox、Chrome、Ie,以及Remote,目前支持的python版本有2.7或3.2以上.
selenium 可以自動化測試、搶票、爬蟲等工作。初次了解,現(xiàn)在模擬登錄百度——即自動打開瀏覽器、自動輸入賬號密碼并提交進行登錄。
工作需要實現(xiàn)一個微博自動登錄的操作,在網(wǎng)上差了一些資料,決定使用selenium+python實現(xiàn)
selenium 是一個web的自動化測試工具,主流一般配合java或者python使用,我這里使用的是python,可支持的瀏覽器基本包括所有主流瀏覽器IE、Mozilla Firefox、Google Chrome。
安裝過程不再贅述,但是后續(xù)使用時,發(fā)現(xiàn)很多報錯與版本兼容性有關(guān),因此這里列出可用的版本搭配:
python2.7
selenium3.0.2
火狐驅(qū)動geckodriver.exe 版本v0.14.0 (使用高版本會出現(xiàn)異常報錯)
火狐瀏覽器52.0.2 (32 位) (版本太低或53的最新版本,都會報錯)
#encoding=utf-8 from selenium import webdriver import time import os #模擬登陸weibo def getCookies(weibo): """ 獲取Cookies """ cookies = [] driver = webdriver.Firefox() time.sleep(3) #sleep一下,否則有可能報錯 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') #瀏覽器版本不匹配的時候這里可能報錯 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里實現(xiàn),這種方法是獲取不到的。
另外還有find_element_by_name、find_element_by_id的方法,但是我使用的時候出現(xiàn)找不到情況,懷疑是瀏覽器版本不匹配的原因。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python爬取百度地圖POI數(shù)據(jù)代碼的步驟
爬取百度地圖的POI數(shù)據(jù)涉及法律和道德問題,因為這類數(shù)據(jù)受到版權(quán)保護,且大多數(shù)在線地圖服務(wù)都有嚴格的反爬蟲措施,這篇文章主要介紹了Python爬取百度地圖POI數(shù)據(jù)代碼,需要的朋友可以參考下2024-08-08python實現(xiàn)學(xué)生信息管理系統(tǒng)(面向?qū)ο?
這篇文章主要介紹了python實現(xiàn)面向?qū)ο蟀鎸W(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06聊聊python中的load、loads實現(xiàn)反序列化的問題
在python自動化中,我們傳遞一些參數(shù)是需要從文件中讀取過來的,讀取過來的字典并非python對象數(shù)據(jù)類型而是string類型。本文給大家分享python中的load、loads實現(xiàn)反序列化的問題,感興趣的朋友一起看看吧2021-10-10在Python中pandas.DataFrame重置索引名稱的實例
今天小編就為大家分享一篇在Python中pandas.DataFrame重置索引名稱的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11python生成不重復(fù)隨機數(shù)和對list亂序的解決方法
下面小編就為大家分享一篇python生成不重復(fù)隨機數(shù)和對list亂序的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04