Python+Selenium实现自动登录

Selenium是一个用于支持web浏览器自动化的一系列工具和库,常用于自动化测试。其最核心的是WebDriver,是一个编写指令集的接口。

官方介绍:https://www.selenium.dev/documentation/en/

1.selenium安装

pip install selenium

2.安装浏览器驱动

webdriver需调用浏览器驱动来操作浏览器。注意要选择和自己浏览器版本对应的驱动。

Chrome驱动程序下载地址:http://npm.taobao.org/mirrors/chromedriver/

Firefox驱动程序下载地址:https://github.com/mozilla/geckodriver/releases

3.几行代码实现自动打卡

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome('E:\chromedriver\chromedriver.exe')
#火狐浏览器
#driver = webdriver.FireFox('...')
driver.get('https://your_url')
#停留一秒,防止页面未加载完成从而找不到元素。
sleep(1)
#通过id值来选择网页元素,即账号密码输入框的id分别为username和password,根据实际情况修改。
driver.find_element_by_id("username").send_keys('your_username')
driver.find_element_by_id("password").send_keys('your_passwd')
#通过class名字来确定按钮元素。
driver.find_element_by_class_name("click").click()
driver.quit()

关于上面提及的css元素查找并不是唯一的方法,根据实际网页代码情况来选择简便的方法。find_element_by_css_selector、find_element_by_id、find_element_by_xpathd都是可以确定元素的方法。有兴趣可以了解一下。

4.设置windows计划任务运行代码

此步骤比较简单,这里不再赘述。

扩展

如果有多个账号需要打卡,我们可以新建一个json文件,将账号密码保存在json文件中,依次读取,参考以下代码。

from selenium import webdriver
from time import sleep
import json

usernames = []
passwds = []
    
def login(username,passwd):
    driver = webdriver.Chrome('E:\chromedriver\chromedriver.exe')
    driver.get('https://your_url')
    sleep(1)
    driver.find_element_by_id("username").clear()
    driver.find_element_by_id("password").clear()
    driver.find_element_by_id("username").send_keys(username)
    driver.find_element_by_id("password").send_keys(passwd)
    driver.find_element_by_class_name("click").click()
    sleep(1)
    driver.quit()

def getUserInfo():
    f = open("userinfo.json",encoding='utf-8')
    loadjson = json.load(f)
    useraccount = loadjson['useraccount']
    for i in range(len(useraccount)):
        usernames.append(useraccount[i]['username'])
        passwds.append(useraccount[i]['passwd'])
    f.close()
    
if __name__ == '__main__':
    getUserInfo()
    for i in range(len(usernames)):
        login(usernames[i],passwds[i])


「 文章如果对你有帮助,请点个赞哦^^ 」 

5+

这篇文章有一条评论

  1. demo

    123

评论关闭。