日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Selenium簡單實踐,登錄QQ郵箱和QQ空間

 heii2 2018-08-25

Selenium是什么?一句話,自動化測試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器,python有selenium庫可以專門用來操縱瀏覽器,下面我用火狐瀏覽器為例介紹代碼登錄郵箱和空間的過程。


環(huán)境配置


  • 首先安裝selenium,在終端執(zhí)行pipinstall selenium即可。

  • 然后安裝火狐瀏覽器,如果本地有火狐瀏覽器即可忽略本操作。

  • 安裝火狐驅(qū)動程序,F(xiàn)irefox的驅(qū)動geckodriver下載地址:

    https://github.com/mozilla/geckodriver/releases/

    下載解壓后把geckodriver.exe(linux是geckodriver文件)發(fā)到Python的安裝目錄的Scripts文件夾里面就可以了。


注:不使用火狐瀏覽器也可以使用谷歌瀏覽器Chrome,下載安裝Chrome,在 

http://chromedriver.storage./index.html

或者

http://npm./mirrors/chromedriver/

下載對應(yīng)的webdriver,對應(yīng)表如下



然后將chromedriver.exe文件放到python安裝目錄下的Scripts文件夾下即可


登錄qq郵箱

from selenium import webdriver

driver=webdriver.Firefox()
driver.implicitly_wait(3) #設(shè)定隱式等待時間
driver.get('https://mail.qq.com/')

user='qq賬號'
password='qq密碼'

webdriver提供八種元素定位方法,如表


方法

解釋

find_ element_ by_id()

 通過id定位

find_ element_ by_ name()

 通過name定位

find_ element by_ class_ name()

 通過class name定位

find_ element_ by_tag_ name()

通過標(biāo)簽名定位

find_ element_ by_link_text()

通過文本鏈接定位

find_ element_ by_ partial link_ text()

 通過文本鏈接的一部分定位

find_ element_ by_xpath()

通過絕對路徑定位

find_ element_ by_ css_ selector()

 通過css選擇器定位


我在這里發(fā)現(xiàn)xpath(絕對路徑定位)比較方便,尤其是在使用工具的情況下,在火狐瀏覽器附加插件中,如圖



搜索xpath,選擇第一個插件




如圖,點擊圖片看原圖,這就是xpath的操作指南



這樣,我們就可以避免看復(fù)雜的網(wǎng)頁源代碼查找相關(guān)元素了,尤其是在網(wǎng)頁很復(fù)雜的情況下,合理使用xpath插件可以提高效率。

選擇基本版后,網(wǎng)頁變成這樣


好了,繼續(xù)補(bǔ)上代碼,如下


driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/a[1]').click() #選擇 基本版
driver.implicitly_wait(3)
driver.find_element_by_xpath('//*[@id='u']').clear()
driver.find_element_by_xpath('//*[@id='u']').send_keys(user)  #輸入賬號
driver.find_element_by_xpath('//*[@id='p']').clear()
driver.find_element_by_xpath('//*[@id='p']').send_keys(password) #輸入密碼
driver.find_element_by_xpath('//*[@id='go']').click()       #登錄

程序運行結(jié)果如下動態(tài)圖



登錄QQ空間


在qq空間的登錄界面,如圖,我們發(fā)現(xiàn),沒有基本版這個選擇捷徑了,就只能在中間那選擇二維碼登錄或者賬號密碼登錄



使用xpath定位的時候發(fā)現(xiàn)無法定位,如圖



但是別忘了,沒法定位是有原因的,鼠標(biāo)右鍵單擊這發(fā)現(xiàn)其實這是一個框架,選擇“查看框架源代碼”,在地址欄下刪除“view-source:” 回車,然后再用xpath重新定位,如圖




代碼如下:

from selenium import webdriver

driver=webdriver.Firefox()
driver.implicitly_wait(3)
driver.get('https://qzone.qq.com/')

user='qqzhanghao'
password='qqmima'

frame=driver.find_element_by_id('login_frame')
driver.switch_to.frame(frame)
driver.find_element_by_xpath('//*[@id='switcher_plogin']').click() #選擇賬號密碼登錄
driver.find_element_by_xpath('//*[@id='u']').clear()
driver.find_element_by_xpath('//*[@id='u']').send_keys(user)
driver.find_element_by_xpath('//*[@id='p']').clear()
driver.find_element_by_xpath('//*[@id='p']').send_keys(password)
driver.find_element_by_xpath('//*[@id='login_button']').click()

程序運行結(jié)果:



圖中程序點擊登陸的時候突然出現(xiàn)了網(wǎng)絡(luò)繁忙之類的,我馬上再點擊一下補(bǔ)了一刀,哈哈哈,完美。

 

寫在最后


  • 登錄QQ空間和QQ郵箱的時候有可能要輸驗證碼,但是一直叫輸驗證碼肯定是異常情況,賬號或者密碼錯誤。

  • 使用自己經(jīng)常使用的電腦一般不會輸驗證碼,但是自動化登錄頻率多了會。

  • 其他瀏覽器在插件里輸入xpath發(fā)現(xiàn)工具還挺多,當(dāng)發(fā)現(xiàn)生成的絕對路徑很長的時候多半也是對的

  • 當(dāng)?shù)卿浟薗Q可以直接點擊QQ頭像的那個圖標(biāo),使用自動化程序也是可以的,只是絕對路徑需要換一個工具查找,因為使用xpath finder的時候點一下圖標(biāo),路徑?jīng)]出現(xiàn),但是……已經(jīng)登錄了。


我的困惑:


在登錄QQ空間的時候我發(fā)現(xiàn)登錄界面是在一個框架里面的,在查網(wǎng)頁源代碼的時候我驚訝的發(fā)現(xiàn)框架竟然是被注釋掉了,如圖:



那么問題是,這段被注釋掉的代碼是如何執(zhí)行的呢?我是非常非常非常的驚訝,懇請大佬們回答,解決我目前最大的困惑。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多