吾八哥博客

您现在的位置是:首页 > DevOps > 自动化 > 正文

自动化

吾八哥学Selenium(六):利用Selenium快速登录博客园

吾八哥2018-02-13自动化3715

之前我们介绍了Python里如何安装Selenium库,今天这里就实现一个小Demo来简单熟悉下Selenium库的用法,就拿博客园来练手吧!

初步分析

博客园登录地址为:https://passport.cnblogs.com/user/signin,在Chrome浏览器里打开该登录页面,登录界面如下图:

image.png

登录界面还是比较简洁的,需要输入用户名和密码,已经勾选是否要下次自动登录,然后就是点击登录按钮,一次简单的登录流程,需要用户操作的就是两个编辑框,一个复选框,一个按钮单击事件。那么我们要做的事情就利用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来完成了!