selenium模拟登录豆瓣和qq空间
今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:mon.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
另外,豆瓣的主页(/)使用了iframe嵌套了登录页面:<iframe style="height: 300px; width: 300px;" frameborder='0' src="///passport/login_popup?login_source=anony"></iframe>
,所以模拟登录的时候直接访问登录页面就好。
很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:101677771
from selenium import webdriverimport timedriver=webdriver.Chrome(executable_path='D:/chromedriver.exe')driver.get('/')#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 webdriverimport timedriver=webdriver.Chrome(executable_path='D:/chromedriver.exe')driver.maximize_window()driver.get('/')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) #可以查看当前页面的urltime.sleep(10)driver.close()