对NENU研究生教务系统网站做自动化测试

2024-03-11 00:28

本文主要是介绍对NENU研究生教务系统网站做自动化测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       由上一篇博客可知(解决NENU研究生教务系统网站“不能创建对象”等兼容性问题-CSDN博客),我通过Tampermonkey脚本解决了NENU研究生教务系统网站在非IE内核浏览器中访问时“不能创建对象”的问题。

        在解决问题的过程中,为了Tampermonkey脚本的使用不影响研究生教务系统网站的功能使用,需要通过回归测试保证研究生教务系统网站的功能没有受影响。

        在总结了研究生教务系统的所有功能后,在杨贵福老师的建议下使用自动化测试工具Selenium对教务系统做了自动化测试。

        由于NENU研究生教务系统网站有较大变化,对网站总结的功能表格也随着改变。下表为现在NENU研究生教务系统网站的功能总结,也许以后还会有变化。

页面

子页面

功能

是否完成自动化测试

“培养方案”页面

“培养方案总纲”页面

进入“教学执行计划”页面

选择专业

选择年级

点击按钮

点击按钮

“教学周历管理”页面

“教学周历查询”页面

点击“学年学期”下拉框

选择学年学期

打印功能

“学生选课”页面

“学期课表查询”页面

选择“周次”

选择“学期”

点击按钮

选择复选框

点击

点击“打印课表(非合并)”

点击“打印课表(合并)”

     “成绩信息”页面

“成绩查询”页面

“学号”、“像”等一系列下拉框

文本框输入“学号”和“姓名”

点击按钮

“提出质疑”功能

“打印申请表”功能

切换页数按钮

切换页数文本框

切换页数按钮

点击“打印”按钮

选择打印条件

点击“确定”按钮

点击“取消”按钮

点击“切换”按钮

页面操作按钮

关闭页面

最小化页面

最大化页面

        在对教务系统网站做自动化回归测试时,学习到很多新的测试技术。

        大多数功能的测试使用Seleium提供的元素定位的方法(findElement()方法)、点击元素的方法(click())、在文本框中填入内容的方法(sendkeys())都可以实现,着重说一下比较难实现的点,也就是我在本次自动化测试中学习到的新的测试技术和遇到的测试难题。

1.Frame切换

1.1问题描述

        在定位图1所示页面中的左侧导航栏中的“培养方案总纲”选项时,总报定位不到元素的错误,如下图所示。

图1

1.2 解决过程        

        最初的工作重点放在检查代码上,反复检查代码并未发现任何问题。

        在网络上搜索,偶然发现有人在一篇博客中提到了切换iframe的问题,若iframe没有切换正确,那么元素无法被定位到。(博客链接为python 关于selenium模拟一页一页点击,出现定位错误的解决_no such element: unable to locate element: {"metho-CSDN博客)

        于是检查图1所示的源代码,在源代码中搜索“iframe”,发现包括“培养方案总纲”和“教学执行计划”的菜单确实在iframe标签下。如下图所示。

        通过参考官方文档(链接为Working with IFrames and frames | Selenium),明白了Selenium只能访问顶级document中的元素,若要与iframe或frame中的元素交互,需要切换到元素所在的iframe或frame下,类似于切换窗口的方式。

        WebDriver提供了3种切换iframe或frame的方式,分别是

  1. 使用WebElement
  2. 使用name或id
  3. 使用索引

        在测试代码中通过采用索引的方式切换到iframe中

driver.switchTo().frame(0);

        元素依然不能被成功定位到。

        检查网页代码后发现iframe标签中嵌套了frameset标签和frame标签,frameset标签不用使用switchTo()切换frame,而frame标签需要逐层切换。

        于是将代码修改为

driver.switchTo().frame(0);driver.switchTo().frame(0);

问题解决,可以成功通过selenium点击“培养方案总纲”和“教学执行计划”。

1.3结论

1.页面中有iframe标签或frame标签时,需要使用switchTo()方法切换到要定位元素的frame或iframe标签下,才可以定位到所要定位的元素。 

2.frameset标签不用使用switchTo()切换frame,而frame标签需要逐层切换。

 

2.窗口切换

todo

3.实现鼠标双击

todo

4.通过实例化Select类的对象选择下拉框的选项

todo

6.线程等待的重要性

todo

这篇关于对NENU研究生教务系统网站做自动化测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796020

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题