1、前言

主要用到python的selenium库,通过模仿浏览器行为+定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能.

2、selenium定位网页元素

关于selenium的使用前准备可以看到我之前的一篇文章python网络爬虫--下载图片

我们有许多方法对页面的元素进行定位,对于不同的元素,我们使用最优的定位方法即可。Selenium提供了下面的方法进行元素定位:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

通过一个例子来大概说明怎么使用这些方法

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  </form>
 </body>
<html>

2.1 根据Name定位

userName = driver.find_element_by_name("username")

在定位到元素后,我们要将对应的用户名填入表单,使用send_keys方法

userName.send_keys("UserName")

2.2 根据css选择器定位

passWord = driver.find_element_by_css_selector("input[type='password']")
passWord.send_keys("PassWord")

3、Example

通过模拟登录码云(gitee),测试是否成功

首先,在浏览器输入地址https://gitee.com/login,进入登录界面

然后,进入开发者模式,找到表单对应的元素. 从以下三张图可以看到用户名密码登录按钮分别对应的元素.然后通过上面介绍的元素选择方法,将对应的值提供给表单即可.

具体代码如下:

from selenium import webdriver
import time

def main():
    url = "https://gitee.com/login"
    # 这里改为你的chromedriver地址
    ChromeDriverPath = "path/to/chromedriver"
    driver = webdriver.Chrome(executable_path=ChromeDriverPath)
    driver.get(url)
    # 这里将UserName改为你自己的
    driver.find_element_by_id("user_login").send_keys("UserName")
    # 修改PassWord
    driver.find_element_by_id("user_password").send_keys("PassWord")
    # 获取到登录按钮的driver后,使用click()函数,模拟点击button
    driver.find_element_by_css_selector("input[name='commit']").click()

    time.sleep(20)
    driver.quit()

if __name__ == "__main__":
    main()
Last modification:August 15th, 2020 at 06:53 pm
如果觉得我的文章对你有用,请随意赞赏