selenium自动化登录完整流程

本文使用正方教务系统作为例子演示selenium自动化登录的完整流程

使用selenium需要先下载对应版本的浏览器驱动,并配置路径。

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def selenium_set():
    global browser
    print('正在唤起火狐浏览器,唤起后请勿关闭,手动最小化即可...')
    time.sleep(1)
    # 进入浏览器设置
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    options.add_experimental_option('useAutomationExtension', False)
    # 设置中文
    options.add_argument('lang=zh_CN.UTF-8')
    # 更换头部
    options.add_argument(
        'User-Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"')
    options.add_argument('content-type="application/x-www-form-urlencoded"')
    # 取消下面一行注释设置无头,也就是不显示浏览器了
    # options.add_argument('--headless')
    # accept="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
    # 创建浏览器对象
    browser = webdriver.Chrome(options=options)
    # 规避机器人检测
    browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
            Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
            })
        """
    })
    return browser


def selenium_login(yhm='学号',mm='密码',url='url'):
    browser.get(url)
    time.sleep(1)
    # <input type="text" class="form-control" name="yhm" id="yhm" value="" placeholder="用户名" onblur="" autocomplete="off">
    # 定位用户名输入框
    browser.find_element(by=By.ID, value='yhm').send_keys(yhm)
    # <input type="text" class="form-control" name="mm" id="mm" value="" placeholder="密码" autocomplete="off" onfocus="this.type='password'">
    # 定位密码输入框
    browser.find_element(by=By.ID, value='mm').send_keys(mm)
    browser.quit()
    # 回车操作
    browser.find_element(by=By.ID, value='password').send_keys(Keys.RETURN)
    # 点击登录操作,和上面任选一个即可
    # browser.find_element(by = By.ID,value='dl').click()


browser = selenium_set()
id='学校编号'
yhm='学号'
mm='密码'
# 哈哈,不建议这样命名,这里这样命名是因为网页的id是这样的
# 课表接口,已把post参数加到url里
# url = 'https://jwglxt.haut.edu.cn/jwglxt/kbcx/xskbcx_cxXsgrkb.html?gnmkdm=' + id + '&su=' + yhm+'&xnm='+xnm+'&xqm='+xqm+'&kzlx=ck'
# 首页
url='https://jwglxt.haut.edu.cn/jwglxt/xtgl/index_initMenu.html'
selenium_login(yhm,mm,url)
# 关闭浏览器
# browser.quit()

如果用selenium获取cookie只需要遍历获取name和value两对键值对即可,给requests使用时拼接成"name=value;name=value"放进headers里面

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值