你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

selenium选选修课,正方教务系统

2021/12/28 8:06:48

基于python语言,调用Chromedriver自动化库,
调用打码平台api,实现自动账号密码验证码自动识别登录,完成选课
代码如下

from PIL import Image
import time
import fateadm_api
from selenium import webdriver
from selenium.webdriver import ActionChains
a=time.time()
b=str(a)
print(b)
x = 919
y = 348
w = 91
h = 32
username=input('请输入用户名')
password=input('请输入密码')
driver_path = r"C:\Users\Dingyinghao\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path)
chanin = ActionChains(driver)
driver.get('http://jw.usts.edu.cn/xs_main.aspx?xh=21200104328#')
driver.implicitly_wait(20)
dl = driver.find_element_by_xpath('//*[@id="txtUserName"]')
dl.send_keys(username)
# time.sleep(2)
dl_mima = driver.find_element_by_xpath('//*[@id="TextBox2"]')
dl_mima.send_keys(password)
c=r'C:\Users\Dingyinghao\Desktop\新建文件夹 (2)\{}.png'.format(b)
driver.save_screenshot(c)
img = Image.open(c)
region = img.crop((x, y, x + w, y + h))
# 保存图片
region.save(c)
filenames = c
b = fateadm_api.TestFunc(filename=filenames)
yzm=b.pred_rsp.value
print('*' * 40)
print('验证码是:',yzm)
print('#'*40)



driver.find_element_by_xpath('//*[@id="txtSecretCode"]').send_keys(yzm)

driver.find_element_by_xpath('//*[@id="Button1"]').click()

# time.sleep(10)

driver.switch_to.window(driver.window_handles[-1])
yidong = driver.find_element_by_xpath('//*[@id="headDiv"]/ulP[2]/a/span')
chanin.move_to_element(yidong).perform()

el = driver.find_element_by_xpath('//*[@id="headDiv"]/ulP[2]/ulP[1]/a')
el.click()
# time.sleep(2)
driver.switch_to.frame('iframeautoheight')

el1 = driver.find_element_by_xpath('//*[@id="kcmcGrid__ctl3_jc"]')
el1.click()

# time.sleep(1)
el2 = driver.find_element_by_xpath('//*[@id="kcmcGrid__ctl3_xk"]')
el2.click()
el3 = driver.find_element_by_xpath('//*[@id="Button1"]')
el3.click()

用了最简单的方法,截图保存,先手动测量然后再截取验证码图片,再调用打码平台api
速度很快,但是对于学校的抢课系统服务器太辣鸡,这种方式也很难受