吾八哥学Selenium(六):利用Selenium快速登录博客园
之前我们介绍了Python里如何安装Selenium库,今天这里就实现一个小Demo来简单熟悉下Selenium库的用法,就拿博客园来练手吧!
初步分析
博客园登录地址为:https://passport.cnblogs.com/user/signin,在Chrome浏览器里打开该登录页面,登录界面如下图:
登录界面还是比较简洁的,需要输入用户名和密码,已经勾选是否要下次自动登录,然后就是点击登录按钮,一次简单的登录流程,需要用户操作的就是两个编辑框,一个复选框,一个按钮单击事件。那么我们要做的事情就利用Selenium来自动填写表单,自动提交。涉及到如何找页面元素,如何填充值,如何触发单击事件,这里面的具体的细节咱今天就不多说了,找本基础的书看看就可以了。
元素定位
在Chrome浏览器里按F12打开强大的开发者工具,然后鼠标对着用户名输入框右键选择“检查”则可自动定位到元素窗口对应的代码。
用户名元素的代码为:
<input type="text" id="input1" value="" class="input-text" onkeydown="check_enter(event)">
密码元素的代码为:
<input type="password" id="input2" value="" class="input-text" autocomplete="new-password" onkeydown="check_enter(event)">
下次自动登录复选框的元素代码为:
<label for="remember_me" onkeydown="check_enter(event)">下次自动登录</label>
登录按钮的元素代码为:
<input type="submit" id="signin" class="button" value="登 录">
由此可得知用户名和密码编辑框以及登录按钮都有元素id,那么好办了,可以直接通过id来定位元素了。下次自动登录复选框没有id,则可以使用xpath路径来定位的。xpath路径的获取方法为,在开发者工具窗口里对着元素代码右键选择"copy"--->“copy XPath”。
Python实现
现在来在Python里实现一下吧,具体代码如下:
# Autor: 5bug # WebSite: http://www.xuePython.wang # 学Python网QQ群: 643829693 import os from selenium import webdriver def cnblogs_login(): driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") driver.maximize_window() #打开登录页面 driver.get('https://passport.cnblogs.com/user/signin') #输入用户名和密码 driver.find_element_by_id('input1').send_keys('xxxx') driver.find_element_by_id('input2').send_keys('xxxxxx') #勾选是否要自动登录 checkbox = driver.find_element_by_xpath('//*[@id="Main"]/form/div[5]/label') if not checkbox.is_selected(): checkbox.click() #单击登录按钮 driver.find_element_by_id('signin').click() print(driver.title) if __name__ == "__main__": cnblogs_login() os.system("pause")
运行后即可自动完成账号和密码的输入了。
这里遇到了验证码识别机制,这个就留到后面咱们在分享如何用Python来完成了!