【软件测试大赛Web应用省赛】跳坑记录

2024-06-19 11:58

本文主要是介绍【软件测试大赛Web应用省赛】跳坑记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【软件测试大赛Web应用省赛】跳坑记录

本文写在预赛通过的基础上,默认后来者已经接触过web应用测试,并有一定的基础知识。
本文写于2020.11.8省赛结束,希望这些坑以后不会再有人跳进去。

【前排提示】没学过前端因为懒 ,所以有关网页的术语可能使用有误,烦请理性讨论_(:з)∠)_有错的地方可以在评论区指出~

1.frame的切换

今年的省赛功能测试题目是登录网易云进行操作(前两步操作如下图)

题目截图
第一步点击“歌手”,没有问题,直接复制xpath然后click就行。

问题在第二步,进入到歌手页面,发现无论怎么复制“华语女歌手”的xpath,甚至是页面上其他地方的xpath,都无法进行点击操作,会提示你“not such element”。这是为什么呢?我们来看一下网页结构:

左边红框是题目要求定位的元素,右下红框是元素的a标签
怕看不清,截一张放大的网页代码

右上的红框表示,题目要求的元素包含在一个名字叫做“contentFrame”的iframe里面,这就是我们无法进行点击操作的原因。简单来说,网页的自动化操作是有空间限制的。我们第一步点进“歌手”页面的这步操作,“歌手”元素所在的空间是默认frame;而第二步点击“华语女歌手”,它所在的空间是另外一个iframe,我们需要通过语句来进入这个iframe才能进行自动化操作:

driver.switchTo().frame("contentFrame");//进入iframe
driver.switchTo().defaultContent();//返回默认frame

类比一下,上面的操作就像我们用命令提示符的时候,如果现在的工作目录是D盘,而你现在想删除C盘根目录的某个文件(这里假如它叫233.txt好了),那么直接 del 233.txt 是行不通的,要先把工作目录转换到C盘根目录,再 del 233.txt

要注意,题目之后的操作要求中,有的元素在iframe里面,有的在默认frame里面,要根据情况使用上面的语句来切换工作frame。

2.变化的xpath

先来看一下题目的第三步操作要求:
题目第三步
这个所谓的“添加到播放列表”的xpath复制出来是这样的:

driver.findElement(By.xpath("//*[@id=\"2287551604833444877\"]/td[3]/div/a")).click();

你会发现无法进行点击,显示“not such element”。更绝望的是,你每次复制出来的xpath都不一样。这是因为网抑云的这个按钮,在采用复制相对xpath的时候,复制出来的是包含时间戳的xpath(就是代码中“id=\”后面那一串数字),这个时候我们就不能用这个xpath了(毕竟每时每刻都不同),我们要采用绝对xpath,或者说full xpath
一般用的是copy xpath,这里要copy full xpath
我们复制出来的绝对xpath长这样:

driver.findElement(By.xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[3]/div/a")).click();

平常的时候用相对就行,因为绝对太长了()

3.(此条不确定是否为得分点)用文字定位元素

有一步操作是这样的:

这时候可以直接

driver.findElement(By.linkText("模特")).click();

由于时间仓促,没有测试这步操作是否正确得分,仅供参考。

今年主要是没想到用iframe,浪费了大概两个小时(而且之前也没有很多web应用测试的文章),希望这篇文章能为后来者提供一定的帮助。

随意转载
大概没人会转载吧(

这篇关于【软件测试大赛Web应用省赛】跳坑记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat