本篇文章要做的是关于一个自动化测试。

目录

一、准备工具

1、编程语言及编译器

2、需要的包

3、浏览器

4、你需要在你的Python提前安装库。

二、代码部分

1、登录页面

2、下一步是进入主页

3、选课页面

4、选课页面

5、无限重复

完整代码如下:(注意替换代码噢)

参考链接:


一、准备工具

1、编程语言及编译器

Python,编译器是Pycharm。

2、需要的包

time包:用于等待系统弹窗结束
              selenium包:自动化测试,也就是这个自动化测试的核心。

3、浏览器

我用的是谷歌浏览器,其他的浏览器能不能用我的代码我不太了解,但是谷歌浏览器可以运行的。
              浏览器需要一个驱动,这个的话,链接在这里:
              https://chromedriver.storage.googleapis.com/index.html
              你需要选择你的谷歌浏览器版本对应的驱动版本,然后解压。
              这部分内容可以百度就行,有很多教程,我就不多啰嗦。搜索的内容无非是:谷歌浏览器驱动、selenium之类的,就会有这些东西。因为我昨晚搜过,有些同学已经写好了教程,使用代码的时候,注意看就行。

https://blog.csdn.net/seedinspring/article/details/89850331?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=a71e0228-0e81-4e7f-b98a-309c4481d485&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

4、你需要在你的Python提前安装库。

必要的安装知识见此链接:

http://www.python3.vip/tut/auto/selenium/01/

配套视频

https://www.bilibili.com/video/BV1Z4411o7TA?p=26

代码语句就是:(需要win+r进入“运行”,然后输入“cmd”,敲回车,再输入代码。)

pip install selenium

二、代码部分

我按照逻辑顺序,一一说明。

1、登录页面

我们需要输入用户名密码,如下图所示。

这部分代码是这样的:

在这个版块的代码第4行和第6行。把那块文字内容替换为你的用户名和密码就行。send_keys()这玩意就是自动帮你填信息,直接替换就行。引号不要删,‘\n’不要删。

想要知道具体原理的话,就自己百度一下,这块内容就行。这里我们说怎么用。

#登录页面xk=browser.get("http://jw.ahnu.edu.cn/student/home?refer=http://jw.ahnu.edu.cn/student/for-std/course-select/single-student/turns")name = browser.find_element_by_id('u')name.send_keys('你的用户名\n') #输入用户名password= browser.find_element_by_id('p')password.send_keys('你的密码\n') #输入密码

2、下一步是进入主页

我们需要锁定你的选课这个按钮的位置。

按照如下的位置,寻找选课的位置。(很重要很重要,如图1)

第一步:在当前页面,按下F12,进入调试模式。(如图2)

图1:主页功能栏

第一步:在当前页面,按下F12,进入调试模式。(如图2)

图2定位

第二步:找到这的网页源代码就行,看看就可以退出了。(前两步是废话,具体直接根据源代码,对照我说的步骤修改就可以了)

第三步:输入Python代码:

new=browser.get("http://jw.ahnu.edu.cn/student/for-std/course-select")

3、选课页面

如果一切顺利的话,现在程序应该正常进入进入了选课页面。

还是和第二步主页一样,锁定开始选课按钮的位置,找到每个人的自己的id。然后就记下来,不要遗忘,后期会用到。

确定位置

确定id

该部分代码如下:(具体意思在代码段里面),注意第4行代码,id要替换,不然进不去。

#选课页面#进入选课页面#将下面链接中,我写的那个id那个地方,换成我在上面说的,你要记的id。into=browser.get("http://jw.ahnu.edu.cn/student/for-std/course-select/替换为你的id/turn/403/select")#into.find_element_by_xpath('/html/body/div/div[1]/div/div/div[2]/div[3]/div[2]/a')#睡眠,等待选课页面那个弹出的弹窗可以选择关掉time.sleep(7)#下面三行代码就是关闭这个弹窗windows = browser.window_handlesbrowser.switch_to.window(windows[-1])   #切换到最新出现的弹窗browser.find_element_by_id('bulletinBtn').click() #点击关闭

4、选课页面

在这里,你需要做的事情有点多,我慢慢说。

a、首先将页面切换到校选课页面。因为默认打开的页面是培养方案,所以首先我们要切换到校选课页面。

切换到校选课页面

b、因为我们是24h抢课,所以我们需要确定我们要抢的课。我这里抢的是:汉字与中国文化。(等会你需要在代码里面输入你要抢的课,课程名)

确定你要抢的课

c、最麻烦的地方,锁定按钮位置,也就是这个选课。因为每个人想要的课不一样,定位会不一样。所以,参见主页的那个F12的方法,看看就会了。

分步骤就是:1、按F12,打开调试器    2、通过我说的那个小按钮,确定选课这个按钮对应的网页代码段  3、获取选课按钮的xpath路径。

选课按钮的代码段

备注:具体步骤可以这样:不用看上面的分步骤。先在那个选课按钮上,单击右键,会有一个小弹窗,选择“检查”,浏览器会自动锁定这个按钮的代码在哪。然后这个代码段处,单击右键,选择“Copy” ——> 选择“Copy XPath”就行了。然后接下来就是替换代码了。

代码段(意思已经注释)

#特色课程#还是切换窗口,回到最新的窗口windows = browser.window_handlesbrowser.switch_to.window(windows[-1])#切换到校选课页面browser.find_element_by_xpath('//*[@id="tabs"]/li[2]/a').click()#输入你要抢的课,,引号不要删browser.find_element_by_xpath('//*[@id="public"]/div[1]/div/div/div/div[1]/input').send_keys('你要抢的课(输入文字)')#把复制的xpath路径放在这里,引号不要删browser.find_element_by_xpath('粘贴你刚刚复制的那个xpath路径').click()

5、无限重复

如果顺利的话,现在你应该完成了自动抢课,但是我们需要不断重复,那么我们需要加个while循环,让他不断循环

代码段如下:

#无限循环#while的判断条件是只要有新的弹窗出现,就说明我们没抢到,所以继续下一次循环
while(len(browser.window_handles)==1):#等待抢课结果time.sleep(2)windows = browser.window_handlesbrowser.switch_to.window(windows[-1])browser.find_element_by_xpath('//*[@id="modal-info-content"]/div[3]/div/div/div[3]/button').click()#把下面这行文字,替换为刚才你复制的那个XPth,冒号不要删browser.find_element_by_xpath('还是放之前说的那个xpath路径').click()

基本上我们整个抢课代码就这样,很简单,如果代码不理解或者我没说清楚,可以百度百度就行。很快就上手了~~

需要修改源代码的地方

完整代码如下:(注意替换代码噢)

from selenium import webdriver
import time
#创建浏览器对象(打开浏览器)
browser = webdriver.Chrome()
browser.implicitly_wait(10)for i in range(0,10) :#登录页面xk=browser.get("http://jw.ahnu.edu.cn/student/home?refer=http://jw.ahnu.edu.cn/student/for-std/course-select/single-student/turns")name = browser.find_element_by_id('u')name.send_keys('你的用户名\n') #输入用户名password= browser.find_element_by_id('p')password.send_keys('你的密码\n') #输入密码#主页new=browser.get("http://jw.ahnu.edu.cn/student/for-std/course-select")#选课页面into=browser.get("http://jw.ahnu.edu.cn/student/for-std/course-select/2308/turn/403/select")time.sleep(7)windows = browser.window_handlesbrowser.switch_to.window(windows[-1])browser.find_element_by_id('bulletinBtn').click()#特色课程windows = browser.window_handlesbrowser.switch_to.window(windows[-1])browser.find_element_by_xpath('//*[@id="tabs"]/li[2]/a').click()browser.find_element_by_xpath('//*[@id="public"]/div[1]/div/div/div/div[1]/input').send_keys('你要抢的课')browser.find_element_by_xpath('粘贴xpath的路径').click()while(len(browser.window_handles)==1):time.sleep(2)windows = browser.window_handlesbrowser.switch_to.window(windows[-1])browser.find_element_by_xpath('//*[@id="modal-info-content"]/div[3]/div/div/div[3]/button').click()browser.find_element_by_xpath('粘贴xpath的路径').click()break

参考链接:

1、selenium相关知识:http://www.python3.vip/tut/auto/selenium/01/

技术层面欢迎大佬们和我讨论,我在锻炼我的代码能力,希望和大佬们一起讨论,了解更多知识。

我的QQ是:871612098,如果你有不明白的地方,可以随时联系我。这样我们才能进步。

Selenium:网页自动化测试代码(Python版)相关推荐

  1. 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程

    设计自己的基于Selenium的自动化测试框架-Java版(2) -定义自己的工作流程 Work flow chart 上图是整个工作流程,红色虚线上面的需要手动来完成,红色虚线下面的实现自动化. 我 ...

  2. 设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层

    设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层 给我们的框架分为3层,分别是叫逻辑层,数据层,对象层. 这三层的存储格式都用xml来表示. 1.逻辑层 (test ...

  3. java+testng+selenium的自动化测试代码

    java+testng+selenium的自动化测试代码 前言 这是用testng框架加selenium做的一个UI自动化测试的项目 Java代码 package com.justin;/*** @a ...

  4. 论文python+selenium网页自动化测试论文_毕业设计(论文)-基于selenium的web自动化测试.docx...

    基于Selenium的Web自动化测试1 绪论1.1引言网络时代的到来和迅速普及,为软件产业带来了一场革命性的变化,基于Web的应用系统已经开始逐步取代原来的单机版应用系统,成为当前和未来的软件系统开 ...

  5. 设计自己的基于Selenium 的自动化测试框架-Java版(1) - 为什么selenium还需要测试框架?...

    本人自动化测试接触时间不久,如有误导,概不负责. 既然有了selenium这个开源的自动化的工具,为什么还要我们自己再去写一个框架? Selenium是自动化的工具,当然是可以用在测试领域,但他不是为 ...

  6. Selenium UI自动化测试(四)Python+Unittest+HTMLTestRunner测试报告—百度hao123实例

    Python+Unittest+HTMLTestRunner测试报告-百度个人中心实例 环境配置:https://blog.csdn.net/sevensolo/article/details/100 ...

  7. 数据集解析 001:MNIST数据集与IDX文件(附带IDX文件提取代码Python版)

    写在最前 在开始这个专题第一篇文章之前,请先允许博主先跟大家聊聊这个专题咱们讲什么具体内容.相信凡是做过与深度学习或者神经网络相关工作的同学对 数据集 这个概念并不陌生,在网络训练过程中我们采用的各种 ...

  8. 李峋同款爱心代码 python版

    import random from math import sin, cos, pi, log from tkinter import * import ctypesuser32 = ctypes. ...

  9. 李峋同款爱心代码Python版

    import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH = 640 # 画布的宽 CANV ...

最新文章

  1. 市场营销部门OKR案例
  2. 在centos下启动nginx出现Failed to start nginx.service:unit not found
  3. lstm 变长序列_keras在构建LSTM模型时对变长序列的处理操作
  4. ffmpeg 常用基本命令和ffmpeg处理RTMP流媒体的常用命令
  5. python学习之函数
  6. encipher.min.php,陌屿授权系统(5.7)最新版 网站授权 - 下载 - 搜珍网
  7. php进阶面向对象及tp5,TP5实战技巧---开发思路 引路造桥
  8. C++ 之const的使用
  9. 【C语言】找出1000以内可以被3整除的数
  10. 【OJ2726】集合问题,堆
  11. SQL 使用总结二 ( 不同库的日期总结)
  12. Android第三方开源水面波浪波形view:WaveView(电量、能量、容量指示)
  13. [边学边用]jquery插件制作
  14. unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误
  15. 微软visio2013安装问题及解决过程
  16. 组合数学之三 —— 生成函数
  17. 【java】PageHelper.startPage
  18. ai钢笔工具怎么描线_ps钢笔工具怎么用——绘制直线、平滑曲线、转折曲线
  19. 网售个人隐私开房记录都可查 信息黑市如此猖獗
  20. ERP已死,云计算上位

热门文章

  1. 普通视图和物化视图的区别
  2. 软件开发教父与国内高手论道实录全文
  3. 《Linux就该这么学》学习笔记(一)
  4. 英雄远征Erlang源码分析(9)-战斗流程解析
  5. 嵌入式数据库开发编程(一)——概述
  6. 透过六家年中总结,看2021协同办公市场新趋势
  7. oracle如何格式化日期,Oracle 日期格式化处理汇总
  8. Revit 2016 笔记07
  9. 一种高精度紧耦合的双目VI-SLAM算法
  10. net基于asp.net的二手商品的交易系统-二手网站-计算机毕业设计