python之iamok每日定时签到程序

使用Selenium和ChromeDriver实现华南理工大学IAMOK网站的自动登录流程,包括元素定位、输入用户名密码及点击登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWai


chrome_driver = r'F:\SHIyanlou\pachong\venv\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(executable_path=chrome_driver)
wait = WebDriverWait(browser, 10)



browser.set_window_position(20,40)
browser.set_window_size(1100,700)


try:
    browser.get('https://sso.scut.edu.cn/cas/login?service=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fiamok.scut.edu.cn%2Fcas%2Flogin')
    input_un = wait.until(EC.presence_of_element_located((By.ID, 'un')))
    input_pd = wait.until(EC.presence_of_element_located((By.ID, 'pd')))
    summit = wait.until((EC.presence_of_element_located((By.CLASS_NAME, 'login_box_landing_btn'))))
    input_un.clear()
    input_un.send_keys(USERNAME)
    input_pd.clear()
    input_pd.send_keys(PASSWORD)
    summit.click()


    btn = btn = wait.until((EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div/div/div[2]/div[3]/button'))))
    trybtn = wait.until((EC.presence_of_element_located((By.CLASS_NAME, 'zxBtn'))))
    browser.execute_script(
        "arguments[0].setAttribute('style', arguments[1]);",
        btn,
        "border: 2px solid red;"  # 边框border:2px; red红色
    )
    
    botton = 'document.getElementsByClassName("btn")[0].click();'
    browser.execute_script(botton)
    print('ooo')
    succ = wait.until((EC.presence_of_element_located((By.CLASS_NAME, 'successPage'))))

    if succ:
        print('iamok')
        browser.quit()

except:
    print('failed')

定时任务设置见链接

#include "includes.h" #define _USER_DBUG 1 #define TASK_STK_SIZE 100 //创建任务堆栈 OS_STK TaskStartStk[TASK_STK_SIZE]; OS_STK Task_A_TaskStk[TASK_STK_SIZE]; OS_STK Task_B_TaskStk[TASK_STK_SIZE]; OS_EVENT *semA2Root; //创建通信方式 OS_EVENT *MboxRoot2A; OS_EVENT *CommQB2A; void *CommMsg[10]; //消息队列空间 //INT8U CommMbox[10]; INT8U CheckMbox[10] = "IamOK"; //邮箱空间 INT8U CheckQ[10] = "IamQOK"; //邮箱空间 void TaskStart(void *pdata); //声明任务 void Task_A_Task(void *pdata); void Task_B_Task(void *pdata); #if _USER_DBUG == 1 void PLL_init(void) //锁相环初始化函数定义,总线时钟8MHz { CLKSEL = 0x00; SYNR = 0x00|0x01; REFDV = 0x80|0x03; POSTDIV = 0x00; PLLCTL_PLLON = 1; asm(nop); asm(nop); while(!CRGFLG_LOCK); CLKSEL_PLLSEL = 1; } void SCI_Init(void) //SCI初始化波特率9600,字符长度8位。发送接收允许 { SCI0BDH = 0x00; SCI0BDL = 52; //波特率9600 SCI0CR1 = 0x00; SCI0CR2 = 0x0C; } void put_char(unsigned char c) //发送一个字符 { while((SCI0SR1&0x80) == 0); SCI0DRL = c; } #endif void main(void) //主函数初始化OS、创建第一个任务、运行多任务 { OSInit(); #if _USER_DBUG == 1 PLL_init(); SCI_Init(); #endif OSTaskCreate(TaskStart,(void *)0,&TaskStartStk[TASK_STK_SIZE-1],5); OSStart(); } void TaskStart(void *pdata) //第一个任务,本任务中创建其他任务 { INT8U err; int i,j; pdata=pdata; RTICTL = 0xCF; //初始化时钟节拍为50Hz,20ms CRGINT |= 0x80; DDRB = 0xFF; //初始化端口 PORTB = 0x0F; MboxRoot2A = OSMboxCreate((void*)0); semA2Root = OSSemCreate(0); CommQB2A = OSQCreate(&CommMsg[0],10); OSTaskCreate(Task_A_Task,(void *)0,&Task_A_TaskStk[TASK_STK_SIZE-1],9); OSTaskCreate(Task_B_Task,(void *)0,&Task_B_TaskStk[TASK_STK_SIZE-1],7); for(;;) { OSSemPend(semA2Root,0,&err); err = OSMboxPost(MboxRoot2A,(void*)"IamOK"); } } void Task_A_Task(void *pdata) { INT8U err; void* msg; int i,j; pdata=pdata; for(;;) { msg = OSQPend(CommQB2A,0,&err); for(i = 0;i<6;i++) { if(CheckQ[i]!=(((char*)msg)[i])) break; #if _USER_DBUG == 1 put_char(CheckQ[i]); put_char((((char*)msg)[i])); #endif }; if(i==5) PORTB =~ PORTB; for(i = 0;i<500;i++) for(j = 0;j<1000;j++); OSSemPost(semA2Root); msg = OSMboxPend(MboxRoot2A,0,&err); for(i = 0;i<5;i++) { if(CheckMbox[i]!=(((char*)msg)[i])) break; #if _USER_DBUG == 1 put_char(CheckMbox[i]); put_char((((char*)msg)[i])); #endif }; if(i==5) PORTB =~ PORTB; for(i = 0;i<500;i++) for(j = 0;j<1000;j++); } } void Task_B_Task(void *pdata) { INT8U err,i; pdata=pdata; for(;;) { err = OSQPost(CommQB2A,(void*)"IamQOK"); #if _USER_DBUG == 1 put_char(err+'0'); #endif OSTimeDly(100); } } 解析
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值