乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Selenium簡單實(shí)踐,登錄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,選擇第一個插件




      如圖,點(diǎn)擊圖片看原圖,這就是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()       #登錄

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



      登錄QQ空間


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



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



      但是別忘了,沒法定位是有原因的,鼠標(biāo)右鍵單擊這發(fā)現(xiàn)其實(shí)這是一個框架,選擇“查看框架源代碼”,在地址欄下刪除“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()

      程序運(yùn)行結(jié)果:



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

       

      寫在最后


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

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

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

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


      我的困惑:


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



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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多