selenium模擬登入豆瓣和qq空間
阿新 • • 發佈:2020-08-25
selenium模擬登入豆瓣和qq空間
今天又重新學習了下selenium,模擬登入豆瓣,發現設定等待時間真的是很重要的一步,不然一直報錯:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
另外,豆瓣的主頁(https://www.douban.com/)使用了iframe嵌套了登入頁面:<iframe style="height: 300px; width: 300px;" frameborder='0' src="//accounts.douban.com/passport/login_popup?login_source=anony"></iframe>
很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:101677771
from selenium import webdriver import time driver=webdriver.Chrome(executable_path='D:/chromedriver.exe') driver.get('https://accounts.douban.com/') #driver.find_element_by_class_name('account-body-tabs').click() driver.find_element_by_class_name('account-tab-account').click() driver.find_element_by_id('username').clear() driver.find_element_by_id('username').send_keys('username') driver.find_element_by_id('password').clear() driver.find_element_by_id('password').send_keys('password') driver.find_element_by_class_name('account-form-field-submit').click() #time.sleep(10) driver.implicitly_wait(10) #設定隱式等待時間 driver.find_element_by_link_text('讀書').click() #time.sleep(10) driver.implicitly_wait(10) driver.close()
原來selenium是有一個方法switch_to.frame可以切換到iframe框架的,那上面也可以直接從豆瓣主頁開始登入的。站在巨人肩膀上的感覺不錯呀。如果iframe沒有id和name屬性的話可以先通過tag定位。
下面利用switch_to.frame進行模擬qq空間的登入:
from selenium import webdriver import time driver=webdriver.Chrome(executable_path='D:/chromedriver.exe') driver.maximize_window() driver.get('https://i.qq.com/') driver.switch_to.frame('login_frame') driver.find_element_by_id('switcher_plogin').click() driver.find_element_by_class_name('inputstyle').clear() driver.find_element_by_class_name('inputstyle').send_keys('1555555') driver.find_element_by_css_selector("[class='inputstyle password']").clear() driver.find_element_by_css_selector("[class='inputstyle password']").send_keys('123456') driver.find_element_by_id('login_button').click() #後面還有一個拖動滑塊的安全驗證,還不會 print(driver.current_url) #可以檢視當前頁面的url time.sleep(10) driver.close()