文章目录
- 零、前言
- 一、自动登录校园网
- 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()
参考文章
- 自动连接校园网(河海大学)
- Python脚本打包成exe,看这一篇就够了