# -*- 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自动化 | 实现抢课功能的更多相关文章

  1. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  2. Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)

    通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI ...

  3. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  4. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  5. selenium===selenium自动化添加日志(转)

    本文转自 selenium自动化添加日志 于logging日志的介绍,主要有两大功能,一个是控制台的输出,一个是保存到本地文件 先封装logging模块,保存到common文件夹命名为logger.p ...

  6. 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 ...

  7. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  8. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

  9. Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

    通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...

随机推荐

  1. linux 下指定配置文件安装mongodb

    下载 官网下载地址:https://www.mongodb.com/try/download/community,并上传linux 服务器 二.mongon目录结构下 /data/mongo . lo ...

  2. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...

  3. 云服务器 ECS Linux 安装 VNC Server 实现图形化访问配置说明

    阿里云官方公共 Linux 系统镜像,基于性能及通用性等因素考虑,默认没有安装 VNC 服务组件.本文对常见操作系统下的 VNC Server 安装配置进行简要说明. 本文中仅讨论VNC的安装,关于图 ...

  4. linux 上安装部署python

    一般在linux中使用python 需要安装pyenv 进行版本控制 因为linux6.9自带的Python是2.6的 同时很多命令都是基于2.6开发的 所以系统环境不能改 我们要开发 只能用pyen ...

  5. React Native学习记录

    1.端口问题 在调试的时候,监听的是8081端口.如果被占用,会报错,并且在reload的时候导致app直接崩掉. 2.插件网站收集 https://nativebase.io/ https://js ...

  6. vue2实现路由懒加载

    一.什么是懒加载 顾名思义,懒加载就是随用随加载,什么时候需要就什么时候加载. 二.为什么需要懒加载 在单页应用中,如果没有使用懒加载,webpack打包后的文件会很大,这时进入首页时的加载时间会很长 ...

  7. Day3 条件判断和循环

    条件判断 if...else if...elif...else 格式: 注意缩进! if x:     active elif y:     active else :     active    注 ...

  8. SysCtlDelay 实现延时

    SysCtlDelay 实际上由 3 条汇编指令实现,一次可以延时 3 个 clock. 例如,初始化系统时钟: SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYS ...

  9. ES6新增数据类型Symbol

    Symbol的含义? ES6(2015) 引入了第七种原始数据类型Symbol,Symbol英文文意思为 符号.象征.标记.记号,在 js 中更确切的翻译应该为独一无二的 Symbol的使用? Sym ...

  10. 老哥你能写篇 SpringCloud Alibaba 全家桶吗? 看视频太累 太枯燥了 !

    最喜欢的一句话: 1.01的365次方=37.78343433289 >>>1 0.99的365次方= 0.02551796445229, 每天进步一点点的目标,贵在坚持 前端时间有 ...