今天我们用selenium+chrome来自动写入批改网的作业,老师为了让我们认真的写作业会把复制粘贴的功能给锁了,但这怎么可能难得倒我们学程序的呢,看我写程序自动帮忙写入

目录:

1、准备环境

2、分析需求

3、实现功能

1、准备环境

python:python3.7.3

首先要确保安装好selenium库和对应浏览器的驱动,若没有安装可以参考前面的文章——爬虫开发环境部署

2、分析需求




javaselenium打开新标签页 selenium打开一个新的标签页_javaselenium打开新标签页


3、功能实现

对着需求我们一步步实现

一、登陆

第一步:输入账号密码

第二步:点击登陆


javaselenium打开新标签页 selenium打开一个新的标签页_javaselenium打开新标签页_02


账号在id为userName的input标签

密码在id为password的input标签

登陆在class为loginBtn的button标签


def log_in():
 """输入用户名和密码并登录"""
    browser.get(url)
    # 输入邮箱
    browser.find_element_by_id('userName').send_keys(email)    # //*[@id="userName"]
    # 输入密码
    browser.find_element_by_id('password').send_keys(password)   # //*[@id="password"]
    # 点击查找作业
    browser.find_element_by_class_name('loginBtn').click()
    # //*[@id="searchRegId"]/form/div[3]/button
    find_work()


二、查找作业

第一步:输入作业页号

第二步:点击查找


javaselenium打开新标签页 selenium打开一个新的标签页_input标签_03


这里需要先清空输入作业号的输入框,不然“请输入作业号”这几个字不会消失

输入作业号在name为rid的input标签

先调用clear()清空输入框,在调用send_keys()输入作业号

查找作文按钮在class为sf_bt的button标签

调用click()点击按钮


def find_work():
 """进入未完成的作业"""
    # 作业号
    input_num = browser.find_element_by_name('rid')  
    input_num.clear()
    input_num.send_keys(work_num)
    # 查找作业 //*[@id="searchRegId"]/form/div[3]/button
    browser.find_element_by_class_name('sf_bt').click()


三、获取原文

这里以000001号作业为例


javaselenium打开新标签页 selenium打开一个新的标签页_input标签_04


这里选择使用XPath提取文本


传入的content为网页源码,regex为XPath规则,返回目标文本
def get_page(content, regex):
 """获取翻译原文"""
    etree = html.etree
    a = etree.HTML(content)
    test = a.xpath(regex)
    return test


四、翻译原文

这里选择把文本传入谷歌翻译


text = get_page(content, text_regex)    # 得到原文
google_url = 'https://translate.google.cn/#view=home&op=translate&sl=auto&tl=en&text=%s' % text[0]
switch_the_window(google_url, 1)          # 创一个新的选项卡
content = browser.page_source


谷歌翻译的url中有个参数就是需要翻译的文本,所以直接将文本加入url中就好了,将url传入方法switch_the_window()中,这个方法是用来打开一个新的页面的,为的是获取译文


def switch_the_window(url=None, num=None):
 """为谷歌翻译打开新的一个选项卡"""
    if url:
        browser.execute_script('window.open()')
    browser.switch_to.window(browser.window_handles[num])
    if url:
        browser.get(url)


五、输入译文


javaselenium打开新标签页 selenium打开一个新的标签页_输入框_05


正文输入框在id为contents的textarea标签


def input_text(text):
 """将译文写进批改网"""
    # //*[@id="contents"]
    input_content = browser.find_element_by_id('contents')
    input_content.clear()
    input_content.send_keys(text)


最后一步提交作业


javaselenium打开新标签页 selenium打开一个新的标签页_javaselenium打开新标签页_06


提交按钮在class为d3的a标签


def submit():
 """提交作业"""
    button = browser.find_element_by_class_name('d3')
    button.click()