关于Selenium模拟浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/PoorGuy_tn/article/details/81873297

关于使用selenium访问CSUFT内网OJ提交代码教程

首先因为OJ的表单含有验证码功能,无法使用Mechanize,所以我想到的是使用Selenium模拟浏览器登录,首先Selenium可以打开可视化浏览器,然后手动输入验证码,还有一种办法就是使用图像识别,但是对于一个比较基础的问题没有必要大材小用,直接手动输入即可。

但是经过提交发现OJ使用的是华科的开源OJ,里面对代码的提交做了限制,10s内最多允许2个提交,所以要想实现多个提交只能采取多账户随机提交,所以我就注册了多个账户随机提交。

对于使用selenium模块,首先我们就要知道selenium如何安装,点击下面链接
https://blog.csdn.net/PoorGuy_tn/article/details/81874289

下面给出实现的代码:

import os
import sys
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://172.30.18.236/JudgeOnline/loginpage.php')
driver.find_element_by_name('user_id').send_keys('20180004')
driver.find_element_by_name('password').send_keys('wjgq0301')


driver.find_element_by_name('vcode').send_keys('5688')
driver.find_element_by_name('submit').click()

for i in xrange(100000):
    driver.get('http://172.30.18.236/JudgeOnline/submitpage.php?id=1115')
    driver.implicitly_wait(10)
    driver.find_element_by_id('edit_area_toggle_checkbox_source').click()
    f = open('/home/poorguy/Desktop/1115.txt')
    code = f.read()
    f.close()
    print code
    driver.find_element_by_id('source').send_keys(code)
    driver.find_element_by_id('Submit').click()
    time.sleep(5.1)

下面是运行结果:

这里写图片描述
注意:
这里使用的是selenium,之所以不使用Mechanize的原因是,表单中存在JS代码,无法使用Mechanize获取框架,所以选用处理JS的selenium。

最后希望大家可以在这里学到知识,此方法是最简单的selenium实现,有很大的提升空间,欢迎大家前来挖掘

警告:

对于本文所讲的内容仅供学习交流,不可用于其他恶意攻击等用途,请保证各网站的正常运转,做一名文明的程序猿。

小白创作,大佬勿喷,谢谢合作

猜你喜欢

转载自blog.csdn.net/PoorGuy_tn/article/details/81873297