效率提高——自动登录校园网(河海大学)与模拟点击与输入获取最新消息

文章目录

  • 零、前言
  • 一、自动登录校园网
    • 1.1 快速锁定小工具
    • 1.2 版本问题
    • 1.3 出现进程未结束的情况
    • 1.4 关于`chromedriver.exe`
    • 1.5 打包ico图片格式
  • 二、获取信息门户最新消息
  • 参考文章

零、前言

最近被校园网弄的也是比较烦心,而且准备远程弄弄这些玩具,为以后的远程的控制写写东西,也是按照哥哥的说法,用python写的东西,提高效率

一、自动登录校园网

这里我只是补充,对于一些小细节的注意事项进行记录

1.1 快速锁定小工具

在这里插入图片描述
这个是真好用,能一下锁定所需要关注的代码行,不需要去翻

1.2 版本问题

不知道什么情况,我的selenium死活都是3.14的版本,更新不上去,不能到4以上的版本,所以原本的
driver = webdriver.Chrome(service=service, options=chrome_options)
原本是需要Service函数,但是索性不需要了,直接按照老版本的来
driver = webdriver.Chrome(executable_path=r"D:\google\chromedriver.exe", options=chrome_options)
这个path是chromedriver.exe的绝对路径。

1.3 出现进程未结束的情况

出现白板,结束进程
嗯,我就把所以chrome的全结束了

process_name = "chrome.exe"
try:
    subprocess.check_call(["taskkill", "/F", "/IM", process_name])
    print(f"进程 {process_name} 已被结束。")
except subprocess.CalledProcessError as e:
    print(f"无法结束进程 {process_name}。错误代码:{e.returncode}")
except Exception as e:
    print(f"发生错误:{e}")

1.4 关于chromedriver.exe

关于这个,是必须要下载的
查看你爹chrome版本:chrome://version/
下载地址:https://googlechromelabs.github.io/chrome-for-testing/
在这里插入图片描述
可以直接把红框里面的数字,改成你的版本号,这样不用找了

1.5 打包ico图片格式

Pyinstaller -F -i awi6i-p5sbb-001.ico campus_internet.py
我用的是这个,网上找的png,jpg的图片想要设置成exe文件,必须转成ico文件

'''
Description: 河海大学校园网自动登录脚本
version: Windows版本 ubuntu版本
Author: ThreeStones1029 2320218115@qq.com
Date: 2024-01-08 17:13:25
LastEditors: ShuaiLei
LastEditTime: 2024-01-09 20:27:46

Description: 河海大学校园网自动登录脚本(改进)
version: Windows11版本 
Author: 周末不下雨 1946809464@qq.com
Date: 2024-10-11 11:36:25
LastEditors: 周末不下雨
LastEditTime: 2024-10-11 11:36:25
'''
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
import datetime
import subprocess
#################################################################
# 这个位置是你自己的下载放置的chromedriver.exe的路径
# 下载之前查看自己的谷歌浏览器版本,需要下载对应版本
# 查看方法:在谷歌浏览器地址栏输入:chrome://version/
# 下载路径https://googlechromelabs.github.io/chrome-for-testing/
#################################################################
print(datetime.datetime.now())


chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--ignore-certificate-errors-spki-list')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-ssl-errors')
# 创建浏览器
driver = webdriver.Chrome(executable_path=r"D:\google\chromedriver.exe", options=chrome_options)
# 设置窗口大小
driver.set_window_size(1920, 1080)
username = "******" # 需要改动的地方,学号或者你的手机号
password = "******" # 需要改动的地方,你的密码
url = "http://10.96.0.155" # 河海大学校园网ip地址
driver.get(url)
try: # 判断当前的页面中是否是已经登录的界面,如果有找到tologout证明已经登录了
    driver.implicitly_wait(5)
    driver.find_element(By.XPATH, "//*[@id='toLogOut']")
    print("find tologout!")
except NoSuchElementException:
    print("开始连接学校网络……")
    # 下面的id信息可以在源码中找到,账户、密码
    driver.implicitly_wait(5)
    username_input = driver.find_element(By.XPATH, "//*[@id='username']")
    password_input = driver.find_element(By.XPATH, "//*[@id='pwd']")
    # 选择网络服务选项
    select_service = driver.find_element(By.XPATH, "//*[@id='selectDisname']")
    #  _service_0:校园网(Campus NET)
    #  _service_1:中国移动(CMCC NET)
    #  _service_2:中国电信-常州(CTCC NET-CZ)
    #  _service_3: 中国联通-常州(CUCC NET-CZ)
    services = driver.find_element(By.XPATH, "//*[@id='_service_1']")
    # 这个地方,有些学校可能不一样,有的就是loginLink,需要仔细查看
    login_button = driver.find_element(By.XPATH, "//*[@id='loginLink_div']")
    print("网页加载完毕")

    # # 传入相关参数,密码、账户、输入框需单击激活后才可输入↓,id名称上述方法同理
    username_input.send_keys(username)
    driver.find_element(By.XPATH, "//*[@id='pwd_tip']").click()
    password_input.send_keys(password)
    select_service.click()
    services.click()
    login_button.click()
    print("连接成功")
    # driver.close()
else:
    print("已登录")
process_name = "chrome.exe"
try:
    subprocess.check_call(["taskkill", "/F", "/IM", process_name])
    print(f"进程 {process_name} 已被结束。")
except subprocess.CalledProcessError as e:
    print(f"无法结束进程 {process_name}。错误代码:{e.returncode}")
except Exception as e:
    print(f"发生错误:{e}")

    # f = input("已登录,要退出吗?(Y/N)\n")
    # if f.lower() == "y":
    #     driver.find_element(By.XPATH, "//*[@id='toLogOut']").click()
    #     driver.find_element(By.XPATH, "//*[@id='sure']").click()
    #     print("已退出登录")
    #     # driver.close()
    # else:
    #     print("程序结束")
        # driver.close()

二、获取信息门户最新消息

嗯,这个我只想快点看到信息门户,顺便熟悉模拟点击和模拟输入,这里就不多解释了

import webbrowser
import pyautogui
import time
import pyperclip

# 你想要打开的网站URL
url = 'https://my.hhu.edu.cn/portal-web/guest/hhdx/index.html?t=1689577009603'

# 使用默认浏览器打开网站
webbrowser.open(url)

# 移动鼠标到屏幕上的指定位置
pyautogui.moveTo(1000, 550)
time.sleep(1)
pyautogui.click()

pyautogui.hotkey('ctrl', 'l')
pyautogui.hotkey('ctrl', 'c')

# 使用pyautogui来获取剪贴板中的链接
current_url = pyperclip.paste()
if "service" in current_url:
    time.sleep(1)
    pyautogui.moveTo(1200, 520)
    pyautogui.click()

    time.sleep(2)
    pyautogui.moveTo(1300, 620)
    pyautogui.click()
else:
    time.sleep(2)
    pyautogui.moveTo(1300, 620)
    pyautogui.click()


# time.sleep(1)
# pyautogui.moveTo(1200, 520)
# pyautogui.click()
#
# time.sleep(2)
# pyautogui.moveTo(1300, 620)
# pyautogui.click()






# 移动鼠标到屏幕上的指定位置,坐标为(100,100)
# pyautogui.moveTo(1200, 520)

# import pyautogui
# import time
#
# # 给一点时间来切换到正确的窗口或位置
# time.sleep(5)
#
# # 移动鼠标到屏幕上的指定位置,坐标为(100,100)
# pyautogui.moveTo(100, 100)
#
# # 在移动到的位置进行鼠标左键单击
# pyautogui.click()
#
# # 可以选择进行双击
# pyautogui.doubleClick()
#
# # 如果需要右键点击,可以指定button参数为'right'
# pyautogui.click(button='right')
#
# # 也可以拖动鼠标到另一个位置,例如(200,200)
# pyautogui.dragTo(200, 200, duration=1)
#
# # 移动到(0,0)位置,即屏幕的左上角
# pyautogui.moveTo(0, 0)
#
# # 执行双击操作
# pyautogui.doubleClick()

参考文章

  1. 自动连接校园网(河海大学)
  2. Python脚本打包成exe,看这一篇就够了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/889925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL数据库安全管理,细节都在这里了

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

创建一个c#程序,实现字符串类型转整数类型

首先,创建一个c#程序 在代码编辑器中编写代码,点击Run按钮或者按下F5键来运行程序。 下面,编写将字符串类型转换为整数类型的代码。 sing System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task…

基于单片机的书库环境监测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DHT11湿度传感器检测湿度,DS18B20温度传感器检测温度, 采用滑动变阻器连接数模转换器模拟二氧化碳和氧气浓度检测,各项数值通过lc…

前端转换double数据,保留两位小数

Number Number(1.00) 1 Number(1.10) 1.1 Number(1.101) 1.101 要想前端展示页面按 1.00展示1,1.10 展示1.1 需要套一个number() 1.1 保留两位小数,并三位一个分隔符 indexView.value[key] formatNumber(indexView.value[key].toFixed(2))//格式…

五子棋项目自动化测试

目录 一、五子棋项目介绍 二、编写Web测试用例 三、自动化测试脚本开发 1、引入依赖 2、设计框架 3、Utils 4、LoginPage 5、RegisterPage 6、MatchPage 7、RunTest类 8、运行程序 一、五子棋项目介绍 五子棋项目是基于 WebSocket 实现的多人在线对战系统&#xff0…

【Vue】Vue 快速教程

Vue tutorial 参考:教程 | Vue.js (vuejs.org) 该教程需要前置知识:HTML, CSS, JavaScript 学习前置知识,你可以去 MDN Vue framework 是一个 JavaScript framework,以下简称 Vue,下面是它的特点 声明式渲染&#xff…

学习threejs,光晕效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀光晕效果实现1. ☘…

powerbi之常用DAX函数使用介绍——提供数据源练习

前述: 本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据,数据源链接如下: 链接:https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 提取码:y17e 一、CALCULATE 1.语法结构 语法结构CALCUL…

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

多线程——线程安全

目录 前言 一、观察线程不安全 二、线程安全概念 三、产生线程安全问题的原因 1.分析示例代码 2.线程随机调度 3.修改共享数据 4.原子性 5.可见性 6.指令重排序 四、解决示例代码的问题 结尾 前言 我们学习多线程编程的目的是为了能够实现“并发编程”,…

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元(GRU)是一种循环神经网络(RNN)的变体,它通过引入门控机制来控制信息的流动,从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出,它简化了…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

【项目】五子棋对战测试报告

目录 一、项目背景 二、项目功能 三、测试计划 1、功能测试&#xff1a; &#xff08;1&#xff09;测试用例&#xff1a; &#xff08;2&#xff09;实际执行测试的部分操作/截图 2、自动化测试 3、性能测试 一、项目背景 1、五子棋对战游戏 采用了前后端分离的方法来…

GO网络编程(七):海量用户通信系统5:分层架构

P323开始&#xff08;尚硅谷GO教程&#xff09;老韩又改目录结构了&#xff0c;没办法&#xff0c;和之前一样&#xff0c;先说下目录结构&#xff0c;再给代码&#xff0c;部分代码在之前讲过&#xff0c;还有知识的话由于本人近期很忙&#xff0c;所以这些就不多赘述了&#…

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持&#xff0c;一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境&#xff0c;并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…

vue-live2d看板娘集成方案设计使用教程

文章目录 前言v1.1.x版本&#xff1a;vue集成看板娘&#xff08;暂不使用&#xff0c;在v1.2.x已替换&#xff09;集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研&#xff1a;2024.10.2开源方案1&#xff1a;OhMyLive2D&#xff08;推荐&#xff09;开源方案2&…

SpringMVC2~~~

目录 数据格式化 基本数据类型可以和字符串自动转换 特殊数据类型和字符串间的转换 验证及国际化 自定义验证错误信息 细节 数据类型转换校验核心类DataBinder 工作机制 取消某个属性的绑定 中文乱码处理 处理json和HttpMessageConverter 处理Json-ResponseBody 处理…

go开发环境设置-安装与交叉编译(二)

1. 引言 Go语言&#xff0c;又称Golang&#xff0c;是Google开发的一门编程语言&#xff0c;以其高效、简洁和并发编程的优势受到广泛欢迎。作为一门静态类型、编译型语言&#xff0c;Go在构建网络服务器、微服务和命令行工具方面表现突出。 在开发过程中&#xff0c;开发者常…

吸毛效果好的宠物空气净化器分享,希喂、霍尼韦尔、米家实测

说起宠物空气净化器&#xff0c;几年前我可能会一脸鄙夷&#xff1a;为啥要花这种智商税冤枉钱&#xff1f; 直到之前养了一只猫&#xff0c;被家中乱飞的浮毛和滂臭的异味搞到头晕&#xff0c;于是作为i一个养宠的家电测评博主&#xff0c;索性对宠物空气净化器这玩意做了超级…

前端继承:原理、实现方式与应用场景

目录 一、定义 二、语法和实现方式 1.原型链继承 2.构造函数继承 3.组合继承 4.ES6类继承 三、使用方式 四、优点 五、缺点 六、适用场景 一、定义 前端继承是指在面向对象编程中&#xff0c;一个对象可以继承另一个对象的属性和方法。在前端领域&#xff0c;通常是指…