# -*- 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. 算法——K 个一组翻转链表

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例: 给你这个 ...

  2. 树莓派了解Linux基本命令

    本节我们来了解一些基本的Linux命令(在树莓派上操作),看完之后,当你再面对Linux黑黑的命令框时至少不会不知所措,你可以用这些基本的命令完成一些需要的操作,比如查找.编辑.查看文件,查看基本的系 ...

  3. spring boot 项目使用idea正常打包后执行总是出现异常,解决办法

    众所周知,spring boot 在构建项目时,确实为Java程序员们省了不少力气,打包项目非常容易. 上周在项目中遇到打包后的项目总是无法运行,困扰了我们团队将近两天才找到原因. 图和真相在这里.

  4. vue第十八单元(单向数据流 vuex状态管理)

    第十八单元(单向数据流 vuex状态管理) #课程目标 1.理解什么是数据管理模式 2.什么是vuex 3.什么时候使用vuex 4.vuex安装及工作原理 5.vuex语法 #知识点 1.首先来看下 ...

  5. [日常摸鱼]bzoj2038[2009国家集训队]小Z的袜子-莫队算法

    今天来学了下莫队-这题应该就是这个算法的出处了 一篇别人的blog:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 题意:一个序列,$m$次询 ...

  6. Javascript 根据文件名判断是否未图片

    var isImage = (/\.(gif|jpe?g|tiff?|png|webp|bmp)$/i).test(filename)

  7. C# 生成6位短信验证码

    1 private string VerifyCode() 2 { 3 Random random = new Random(); 4 return random.Next(100000, 99999 ...

  8. 写一个nginx.conf方便用于下载某个网页的所有资源

    写一个nginx.conf方便用于下载某个网页的所有资源 worker_processes 1; events { worker_connections 1024; } http { include ...

  9. pathon基础2

    支持不同文件,不同sheet页 import xlrdimport xlwtimport osimport time; #往日志文件中追加内容函数def writeLogfile(filename,c ...

  10. sql去除重复的几种方法

    所以用这样一句SQL就可以去掉重复项了: select * from msg group by terminal_id; SQL中distinct的用法(四种示例分析) 示例1 select dist ...