selenium自动化 | 实现抢课功能
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 1 23:39:34 2020
@author: billie
程序运行环境要求:
-python3
-selenium(python第三方库,可用pip安装)
-chromedriver(配置方法可自行百度,需配置对应chrome版本的chromedriver)
网络环境要求:
-学校内网
-----------------具备上述环境要求之后才可成功运行下面的程序,不想配置的话找我帮你选吧--------------------
"""
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
class Spider():
def spider(self,url,name,passwd,className):
try:
# options = Options()
# options.add_argument('--headless')
# options.add_argument('--disable-gpu')
# options = webdriver.ChromeOptions()
# options.add_argument('--ignore-certificate-errors')
# 建立一个chrome对象
driver = webdriver.Chrome()#chrome_options=options
driver.get(url)
# #-------------------------深信息官网-------------------------
# # 执行页面向下滑至底部的动作
# driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# new=driver.find_element_by_xpath('/html/body/div[7]/div/div[1]/ul/li[2]/p[7]/a')
# new.click()
#---------------------------登录页面-------------------------------
nameInput=driver.find_element_by_id("yhm")#获取用户名输入框
nameInput.send_keys(name)
passwdInput=driver.find_element_by_id("mm")#获取密码输入框
passwdInput.send_keys(passwd)
login=driver.find_element_by_id("dl")#获取登录按钮
login.click()#点击登录按钮
#-----------------------教学综合信息服务平台页面---------------------
# time.sleep(1)
drop=driver.find_element_by_xpath('//*[@id="cdNav"]/ul/li[3]')#获取‘选课’下拉菜单
drop.click()
selectClass=driver.find_element_by_xpath('//*[@id="cdNav"]/ul/li[3]/ul/li[2]/a')#获取‘自主选课’链接
selectClass.click()
#----------------------------选课页面------------------------------
# 切换窗口到新打开的页面
#driver.current_window_handle #当前网页窗口
n = driver.window_handles #获取当前页所有窗口句柄
driver.switch_to.window(n[1])#切换到第二个窗口
search=driver.find_element_by_xpath('//*[@id="searchBox"]/div/div[1]/div/div/div/div/input')#获取搜索输入框
search.send_keys(className)#发送输入信息
button=driver.find_element_by_xpath('//*[@id="searchBox"]/div/div[1]/div/div/div/div/span/button[1]')#获取查询按钮
button.click()
time.sleep(100)
except Exception as err:
print(err)
url="http://xjwgl.sziit.edu.cn/xtgl/login_slogin.html?language=zh_CN&_t=1577806337435"
billie=Spider()
#在这里输入你的学号
name="18------"
#在这里输入你的登录密码
passwd=""
#在这里输入你想选的课的名称,比如数学建模,程序进入选课页面之后会自动帮你搜索这门课,没有想选的课的话也可留空
className=""
billie.spider(url,name,passwd,className)
selenium自动化 | 实现抢课功能的更多相关文章
- Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景 在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...
- Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)
通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI ...
- Selenium自动化脚本开发总结
Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...
- python+selenium自动化软件测试(第2章):WebDriver API
2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...
- selenium===selenium自动化添加日志(转)
本文转自 selenium自动化添加日志 于logging日志的介绍,主要有两大功能,一个是控制台的输出,一个是保存到本地文件 先封装logging模块,保存到common文件夹命名为logger.p ...
- Python2.6.6执行selenium自动化
系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...
- Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...
- Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)
在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...
- Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)
通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...
随机推荐
- 题解-SDOI2013 淘金
题面 SDOI2013 淘金 有一个 \(X\).\(Y\) 轴坐标范围为 \(1\sim n\) 的范围的方阵,每个点上有块黄金.一阵风来 \((x,y)\) 上的黄金到了 \((f(x),f(y) ...
- 算法—— n个骰子的点数
把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个 ...
- k8s遇见的问题
open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory 解决方案 ...
- 5.深入Istio源码:Pilot-agent作用及其源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Istio源码是 release 1.5. 介绍 Sidecar在注入的时候会 ...
- mysqldump: [ERROR] unknown variable 'database=test'.
背景: 导出数据库test库的test表数据出现报错信息:mysqldump: [ERROR] unknown variable 'database=test'. 原来是my.cnf参数文件配置了以下 ...
- 【JVM专题】JVM从概述到调优图文详解,含思维脑图深度剖析!
JVM概述 JVM 是一种用于计算机设备的规范,它是一个虚构的计算机的软件实现,简单的说,JVM 是运行 byte code 字节码程序的一个容器. 它有一个解释器组件,可以实现 JAVA 字节码和计 ...
- ADF 第五篇:转换数据
映射数据流(Mapping Data Flow)的核心功能是转换数据,数据流的结构分为Source.转换和Sink(也就是Destination),这种结构非常类似于SSIS的数据流. 在数据流中,数 ...
- 如何正确运用break、continue和return
break.continue和return 一.break 作用:跳出(离break语句最近的)循环 栗子: for(int i = 1;i <= 100;i++){ System.out.pr ...
- Java8 - Stream流:让你的集合变得更简单!
前段时间,在公司熟悉新代码,发现好多都是新代码,全是 Java8语法,之前没有了解过,一直在专研技术的深度,却忘了最初的语法,所以,今天总结下Stream ,算是一份自己理解,不会很深入,就讲讲常用的 ...
- Django入门实战一
前言 Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区.使用这种架构,程序员可以方便.快捷地创建高品质.易维护.数据库驱动的应用程序 ...