思路分析:简单的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)