• 7
  • 6
分享
  • 【软件测试大赛Web应用省赛】跳坑记录——软件测试圈
  • 恬恬圈 2020-11-20 13:29:16 字数 1740 阅读 2680 收藏 6

      本文写在预赛通过的基础上,默认后来者已经接触过web应用测试,并有一定的基础知识。

      本文写于2020.11.8省赛结束,希望这些坑以后不会再有人跳进去。

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

      1.frame的切换

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

1.png

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

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

3.png

4.png

      右下红框是元素的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

      先来看一下题目的第三步操作要求:

5.png

      这个所谓的“添加到播放列表”的xpath复制出来是这样的:

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

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

6.png

      一般用的是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.(此条不确定是否为得分点)用文字定位元素

      有一步操作是这样的:

7.png

      这时候可以直接

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

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

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


作者:世界第一可爱不咕鸟

原文链接:https://blog.csdn.net/u011897679/article/details/109558282#comments_13858116

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   背景  小S是刚工作一年半的校招生,小H是他的导师,无论是技术能力还是业务测试,小H都是团队中的榜样。小H给小S的建设性反馈是期望他能对小H做到简单相信,提升日常沟通和工作效率。  辅导过程  小Z:小H给你提了个建设性反馈,期望你能做到简单相信。我们一起来看下,我能帮助你什么,或者你在改进这些方面过程中有什么卡点,我们一起想办法解决。  小S:大家说要简单相信,我认为大家告诉我的大部分内容我都会照着做,并没有感觉到自己没有简单相信的。  小Z:嗯,我知道怎么回事儿了。当提到简单相信时,这已经是方法层面的事情了,但没有提及问题点,咱们先界定一下。我理解小H说的点在于你有一些观点和认知很难被...
            0 0 732
            分享
          •   其实大部分类型的测试都需要去准备测试数据。  ·手工测试:一些基础数据,比如配置数据等等是需要去准备的;  · 自动化测试:基础需要准备,现有数据,动态运行时产生的数据是需要准备的;  · 性能测试:跟自动化测试差不多。  这里就牵扯到了一些关于数据的概念了。  测试数据的分类  我们可以给测试数据分一些种类:  · 基础数据,比如一些内容管理系统会配置站点的标题,友情链接之类的基础配置数据;  · 存量数据,也就是现有数据。比如在测试一些电商站点的时候会提前插入一些商品信息,类目信息物流信息等;  · 动态数据,也可以叫做session数...
            0 0 975
            分享
          • 测试人员进行的测试活动,不是仅限于版本上线前的测试,版本上线后,我们的测试工作依然在继续,只不过测试环境变成了线上环境,测试力度变为走查形式,一些异常或者特殊场景等会相应减少,但是常用功能和正向流程一个都不能少。以下来简单拆解下线上走查的一些注意事项。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~测试走查,是我们每个测试工程师的日常工作:版本迭代前,通过需求评审,发现现有功能的已知问题;版本进行中,通过测试设计,审视当前测试方案存在的没考虑全的问题;或者开发的设计方案漏洞版本开发时,通过用例评审和迭代测试,审...
            1 0 6408
            分享
          •   随着将更多资源投入到生成式人工智能领域,Meta 公司已经解散了其负责任人工智能(RAI)团队。The Information 今天援引其看到的一篇内部文本爆料了这一消息。报道称,RAI 的大部分成员将转到公司的生成式人工智能产品团队,其他人则将在 Meta 的人工智能基础设施上工作。  Meta经常对外宣称要以负责任的方式开发人工智能,甚至还专门为此设立了一个页面,列出了其"负责任的人工智能支柱",包括问责制、透明度、安全性、隐私等。  The Information 的报道援引 Meta 公司代表乔恩-卡维尔(Jon Carvill)的话说,公司将"继续优...
            0 0 1003
            分享
          • 第一部分:先准备好Jmeter1.在开始编写脚本之前,先要确保你的Jmeter能够正常运行。若你还没有安装Jmeter,可参考以下方法:Jmeter需要java运行环境,所以需要下载JDK,JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html(最好使用 JDK 8  以上的版本,上述链接下可以下载最新的 JDK 版本)安装JDK,请参考百度教程:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html(注意java环境...
            14 14 3438
            分享
      • 51testing软件测试圈微信