浙江理工大学英语平台Unipus自动答题

本文介绍了如何利用Python的Selenium库实现浙江理工大学英语平台Unipus的自动答题功能,通过模拟拖拽填词选择,实现Web自动化操作。
摘要由CSDN通过智能技术生成

思路分析:简单的Web自动化,使用selenium完成简单的拖拽填词选择即可

废话不多说,直接上代码

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select

print("该程序仅用于Python程序学习交流")
print('')
print("目前只适用于蓝色书,如有BUG请联系作者")
print('')
print("请在黑窗口(非浏览器)输入账号和密码")
print('')
print("程序执行过程中请不要操作浏览器")
print('')
print("程序执行完成后请手动访问下面网址查看分数")
print('')
print("http://10.11.8.83/course07/gradebooklist.php")
print('')
print("按回车键继续...")
agree = input()


driver = webdriver.Chrome(r'./../chromedriver.exe')

driver.get('http://10.11.8.83')
driver.minimize_window()

# driver.find_element_by_name('tj_trnews').click()
# driver.get('https://www.baidu.com')
# driver.find_element_by_name('tj_trhao123').click()

# navs = driver.find_elements_by_class_name('mnav')
# for j in navs:
#     print(j)
#
# for index in range(len(navs)):
#     navs[index].click()
#     driver.back()
#     driver.refresh()
#     driver.forward()
#     driver.maximize_window()
#     driver.minimize_window()
#     driver.maximize_window()


def login():
    name_input = driver.find_element_by_id('username')
    password_input = driver.find_element_by_id('password')
    username = input('请输入学号:')
    password = input('请输入密码:')
    driver.maximize_window()
    name_input.clear()
    for i in username:
        # time.sleep(0.03)
        name_input.send_keys(i)
    for j in password:
        # time.sleep(0.03)
        password_input.send_keys(j)
    driver.find_element_by_xpath('//*[@id="LoginForm"]/table/tbody/tr[3]/td[2]/input').click()
    # time.sleep(0.5)
    # driver.get('http://10.11.8.83/login/hpindex_student.php')
    driver.refresh()
    courses = driver.find_elements_by_xpath(
        '//*[@id="BookClassDIV"]/table/tbody/child::tr/td[2]/ul/li/a')
    for course in courses:
        if '读写3' in course.text:
            # print(type(course.get_attribute('href')))
            link = course.get_attribute('href')
            print(link[link.find('BookID=') + 7:link.find('BookID=') + 10])
            print(course.get_attribute('href'))
            print(course.text)
            # driver.get('http://10.11.8.83/book/book{}/index.php?Quiz=N&whichActionPage='.format(course.text))
            course.click()
            driver.refresh()
            return link[link.find('BookID=') + 7:link.find('BookID=') + 10]
    else:
        print('未找到相关课程!')
        return


def write_understanding(book_name, unit, answer):
    # answer应该是一个存储有答案的字典
    url = 'http://10.11.8.83/book/book{}/uyu64mc.php?UnitID={}&SectionID={}&SisterID={}'.format(book_name, unit, 6, 4)
    driver.get(url)
    driver.find_element_by_id('TR_0')
    for i in range(8):
        # print('//*[@id="TR_' + str(i) + '"]/td[2]/input')
        inputs = driver.find_elements_by_xpath('//*[@id="TR_' + str(i) + '"]/td[2]/input')
        # //*[@id="TR_0"]/td[1]/input
        for item in inputs:
            if item.get_attribute('value') == answer[i]:
                item.click()
                break
        # time.sleep(0.3)  # 每做一题休息半秒
        inputs = driver.find_elements_by_xpath('//*[@id="TR_' + str(i) + '"]/td[1]/input')
        for item in inputs:
            if item.get_attribute('value') == answer[i]:
                item.click()
                break
    # driver.find_element_by_xpath("//div[contains(@class,'submit')]/a").click()
    driver.find_element_by_xpath("//div[contains(@class,'submit')]").click()
    try:
        driver.find_element_by_class_name('layui-layer-btn0').click()
    except:
        pass
    # time.sleep(1)


def a_write_word_in_use(book_name, unit, answer):
    # answer应该是一个存储有答案的字典
    url = 'http://10.11.8.83/book/book{}/uyu27blank.php?UnitID={}&SectionID={}&SisterID={}'.format(book_name, unit, 2, 7)
    driver.get(url)
    for i in range(10):
        blank = driver.find_element_by_id('Blank_' + str(i) + '_0')
        blank.clear()
        for letter in answer[i]:
            blank.send_keys(letter)
            # time.sleep(0.03)
        # time.sleep(0.1)
    driver.find_element_by_xpath("//div[contains(@class,'submit')]").click()
    # tip = driver.find_element_by_xpath("/html/body/div[3]/div[2]/p[1]")
    # if 'Done with this activity' not in tip.text:
    try:
        driver.find_element_by_class_name('layui-layer-btn0').click()
    except:
        pass
    # time.sleep(1)


def a_word_building_practice_one(book_name, unit, answer):
    # answer应该是一个存储有答案的字典
    url = 'http://10.11.8.83/book/book{}/uyu29blank.php?UnitID={}&SectionID={}&SisterID={}'.format(book_name, unit, 2, 9)
    driver.get(url)
    for i in range(12):
        blank = driver.find_element_by_id('Blank_' + str(i) + '_0')
        blank.clear()
        for letter in answer[i]:
            blank.send_keys(letter)
            # time.sleep(0.03)
        # time.sleep(0.3)
    driver.find_element_by_xpath("//div[contains(@class,'submit')]").click()
    # tip = driver.find_element_by_xpath("/html/body/div[3]/div[2]/p[1]")
    # if 'Done with this activity' not in tip.text:
    try:
        driver.find_element_by_class_name('layui-layer-btn0').click()
    except:
        pass
    # time.sleep(1)


def a_word_building_practice_two(book_name, unit, answer)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值