【偽】解決動(dòng)態(tài)id元素Selenium無(wú)法捕捉自動(dòng)登錄問題

Python 2.7
IDE Pycharm 5.0.3


原因

不止一個(gè)小伙伴告訴我,想模仿我的一鍵CSDN寫博客想模擬登錄qq或者網(wǎng)易郵箱,但是貌似用xpath和css都不行了,我嘗試了一下,原來(lái)他們采用動(dòng)態(tài)id了。所以直接定位id已經(jīng)不能用了,但是xpath找來(lái)說應(yīng)該只是路徑,和具體變量無(wú)關(guān)吧,為什么還是不行呢?我現(xiàn)在嘗試了網(wǎng)上若干方法,都不成功,所以我抖了個(gè)機(jī)靈~


解決方案

額,目前我沒有找到根治的方法,但是有個(gè)取巧的方法,就是嘗試不同的登陸端口,登錄頁(yè)面不一樣只有一個(gè)對(duì)不,他們的程序員可能只想著最大的登錄口設(shè)置反爬,科科,我可以繞啊。
比如說網(wǎng)易郵箱把,我們肯定一搜“網(wǎng)易郵箱”彈出第一個(gè)就點(diǎn)了對(duì)不對(duì),中了圈套啊,你要記住,程序猿都是很懶的哈哈,我們點(diǎn)開第二個(gè)http://email.163.com/ 就可以了,直接xpath就ok,如果你選擇第一個(gè)http://mail.163.com/ 這個(gè)的話,id就是動(dòng)態(tài)的了,科科。qq郵箱同樣道理,繼續(xù)抖機(jī)靈~點(diǎn)擊qq郵箱,然后右上角有個(gè)基本版,點(diǎn)擊基本版,好啦,一樣可爬,哈哈哈,程序猿,不要太偷懶啊


qq切換基本版

網(wǎng)頁(yè)切換版本

代碼

#登錄網(wǎng)易郵箱
from selenium import webdriver
import time

print 'Please wait...Firefox loading...'
print '---------------------------------'
#reload(sys)

PostUrl ="http://email.163.com/#from=163nav_icon"

driver=webdriver.Firefox()#用瀏覽器實(shí)現(xiàn)訪問
driver.get(PostUrl)

time.sleep(1)
#賬號(hào)填充輸入

driver.find_element_by_xpath(".//*[@id='idPlaceholder']").send_keys('xxxxxxx')
driver.find_element_by_xpath(".//*[@id='pwdPlaceholder']").send_keys('xxxxxxx')


#點(diǎn)擊登錄
click_login = driver.find_element_by_xpath(".//*[@id='btnSubmit']")

click_login.click()
print 'log in...'
print '---------------------------------'
time.sleep(1)


'''
driver.close()
'''


#登錄qq郵箱

from selenium import webdriver
import time

print 'Please wait...Firefox loading...'
print '---------------------------------'
#reload(sys)

PostUrl ="https://ui.ptlogin2.qq.com/cgi-bin/login?style=9&appid=522005705&daid=4&s_url=https%3A%2F%2Fw.mail.qq.com%2Fcgi-bin%2Flogin%3Fvt%3Dpassport%26vm%3Dwsk%26delegate_url%3D%26f%3Dxhtml%26target%3D&hln_css=http%3A%2F%2Fmail.qq.com%2Fzh_CN%2Fhtmledition%2Fimages%2Flogo%2Fqqmail%2Fqqmail_logo_default_200h.png&low_login=1&hln_autologin=%E8%AE%B0%E4%BD%8F%E7%99%BB%E5%BD%95%E7%8A%B6%E6%80%81&pt_no_onekey=1"

driver=webdriver.Firefox()#用瀏覽器實(shí)現(xiàn)訪問
driver.get(PostUrl)

time.sleep(1)
#賬號(hào)填充輸入

driver.find_element_by_xpath(".//*[@id='u']").send_keys('xxxxxxx')
driver.find_element_by_xpath(".//*[@id='p']").send_keys('xxxxxxx')


#點(diǎn)擊登錄
click_login = driver.find_element_by_xpath(".//*[@id='go']")

click_login.click()
print 'log in...'
print '---------------------------------'
time.sleep(1)


'''
driver.close()
'''

最后

在沒有能力解決問題的時(shí)候,換個(gè)角度或許就可以了,哈哈。以后要是我知道怎么根治動(dòng)態(tài)id的問題,我再來(lái)把【偽】字去掉。


致謝

@MrLeo520--一鍵CSDN寫博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Selenium提供了一下方法來(lái)定義一個(gè)頁(yè)面中的元素: find_element_by_id 若查找元素過多,可以...
    shi_xin閱讀 4,564評(píng)論 0 3
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評(píng)論 25 709
  • 唐代詩(shī)人王昌齡的邊塞詩(shī): 第一首《出塞》:秦時(shí)明月漢時(shí)關(guān) ,萬(wàn)里長(zhǎng)征人未還。 但使龍城飛將在 ,不教胡馬度陰山。 ...
    大氣浩然閱讀 1,576評(píng)論 0 1
  • 今天早上本來(lái)打算跑步的,結(jié)果耳機(jī)忘在單位了,所以沒有跑步。因?yàn)槲遗懿降臅r(shí)候喜歡聽書,聽語(yǔ)音,這樣可以讓跑步的時(shí)間過...
    曉茜自留地閱讀 217評(píng)論 0 0
  • 糾正1.降低分貝 2.不說我不懂 3.思量別人話語(yǔ)的真假性.4.多讀書 晚上發(fā)生了一件事情讓我很傷心,自尊心受挫。...
    qarin閱讀 249評(píng)論 0 0

友情鏈接更多精彩內(nèi)容