python+selenuim实现自动登录

tags: python,selenium,软件测试

背景
学校放寒假了,又恢复了去年在家每天打卡的日常,今年就想研究一下怎么用python自动打卡。打卡实际上也是网页操作,今天就分享一下我的实现方法。

为了方便我就找了个网站进行演示。
网站地址: https://panjiachen.gitee.io/vue-element-admin/#/login

环境准备

  1. 谷歌浏览器
    在地址栏输入:chrome://version回车,获取本机谷歌浏览器的版本号
  2. java selenium自动登录 selenium保持登录_selenium

  3. 下载对应版本谷歌浏览器驱动:https://npm.taobao.org/mirrors/chromedriver 下载后解压到本机python的script文件夹下
  4. java selenium自动登录 selenium保持登录_java selenium自动登录_02

  5. 注意: 驱动的版本号要和浏览器的版本号一致。若使用别的浏览器则下载该浏览器的驱动
  6. 下载selenuim
    命令行:pip install selenium 如果之前没配置过的话需要把python安装位置的script文件夹下的pip.exe拖进命令行,然后空格再输入上面的命令。

实现工具

  • 使用selenuim模拟点击、输入、清空等事件。
  • 使用XPATH定位元素
  • 如何确定XPATH?
    可以自己通过dom确定,也可以使用谷歌浏览器自带的功能快速定位。
使用谷歌浏览器快速得到XPATH优缺点
优点
方便快捷,小白也能轻松上手
缺点
①当页面元素会随着操作变化时,使用XPATH绝对定位可能会定位失败
②当页面有嵌套子页面的时候使用XPATH绝对定位会失败
但是selenuim可以通过多种方式定位元素,当无法使用XPATH的时候可以通过别的办法进行定位。

java selenium自动登录 selenium保持登录_selenium_03

  • 谷歌快速得到 full XPATH的方法
    F12打开开发者模式 -> 在想要操作的元素上右键检查 -> 在源码中找到源素对应的代码行 -> 在代码行右键 -> copy -> copy full xpath

实现代码

from selenium import webdriver
from time import sleep

# 创建一个新chrome实例
driver = webdriver.Chrome()

# 打开目标网站
driver.get("https://panjiachen.gitee.io/vue-element-admin/#/login")

# 沉睡的目的是让程序进行地慢一点方便观看,有时候是等待元素渲染完成
sleep(1)

# 因为该网站是默认填好的,所以要先进行清空再填账号密码。

#账号
driver.find_element_by_xpath('/html/body/div/div/form/div[2]/div/div/input').clear()
driver.find_element_by_xpath('/html/body/div/div/form/div[2]/div/div/input').send_keys("editor")

#密码
driver.find_element_by_xpath('/html/body/div/div/form/div[3]/div/div/input').clear()
driver.find_element_by_xpath('/html/body/div/div/form/div[3]/div/div/input').send_keys("123456789098765432")

sleep(3)

# 点击登录
driver.find_element_by_xpath('/html/body/div/div/form/button').click()