测试开发全栈之Python自动化 如果一个元素无法定位,脚本报错了,你一般会考虑哪些方面的原因?

程序员一凡 · 2021年03月14日 · 最后由 程序员一凡 回复于 2021年03月16日 · 3992 次阅读

如果一个元素无法定位,脚本报错了,你一般会考虑哪些方面的原因?

第一个,页面加载过慢,你要去加等待时间。

然后页面可能有 frame 框架页,你需要先跳转进去。

还有可能元素是动态元素,什么叫动态元素?有些元素它的 id 或者名字是动态的,我们可以通过父节点或兄弟节点去定位,定位方式要优化。

还有可能这些元素识别了,但是不能操作,需要会用 js 把前置的操作完成。

如果一个元素无法定位,你一般会考虑哪些方面的原因?

总结:

1.页面加载元素过慢,加等待时间。

2.页面有 frame 框架页,需要先跳转入 frame 框架再定位。

3.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。

4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用 js 先把前置的操作完成。

相信前面三个,大家好理解一点。

第四个我们一起来看实际的案例

(这其实也是一个面试题,面试官会问到你,你做自动化过程中遇到了什么问题,你是如何解决的?理解之后你就可以拿来和面试官说)

我之前定位到一个元素,明明定位到了,但是却不能操作,那么我是怎么处理的?

用 js 把前置的操作完成。

我打开了一个常用网站

像 12306 网站这个元素你就不可以操作,不可以输入,不知道平时买票的时候有没有注意过,可以现在试一下。

这个出发日期是操作不了的,你是删除不了的,你只能选择,你输入也输入不了。(无法输入,无法删除)

因为它有一个属性,readonly 属性,只是可以读的属性,那么你把它干掉,然后你就可以去操作,可以去输入。

这是有一种情况,有很多种情况都是这样的,比如说:

这是我之前写的一个项目,这都是我自己在本地框架代码。

这箭头里面其实是有一个元素的,这里面有一个按钮,进入特殊通道,里面有 “特殊” 的服务。比如说是 VIP 的服务,里面是有一个按钮的,但普通属性是进不去的,没有这个按钮给你,没有这个权限。

说到这个权限,我再啰嗦几句,其实权限测试挺重要,很多系统它有很多的权限测试。很多系统它是分为很多的角色,那每个角色进取它的功能是不一样的,像这个东西就特别适合做自动化。不然你自己要切换 108 种角色,打开一个网站,退出登录退出登录,去测试。就很烦,这个也是我的经验。

权限大家应该都测试过吧,我之前是用自动化把权限这一块测得完完整整。权限的整套功能自动化测试完了,因为每次都要退出登录退出登录,非常麻烦,同样的功能,只是不同的角色,不停的切换。其实这个大家以后也可以作为面试的一个点。你负责自动化,你负责自动化,你用自动化做了什么模块。

很多朋友说我做的登录,就没了,我用自动化去做了登录,你做登录干什么啊,登录这个东西已经很好了,不用你测试了。很多朋友写自动化脚本也是写登录,之后就就没了,玩很多东西,搞完登录后面就没了,见到过很多这样的情况。

所以权限模块这一块大家也可以去说一说。

扯远了,回归正题。

其实这里面有一个按钮,你是看不到的,你如果去点,肯定就会报错,因为这个元素都不可见,那么我们想办法让它显示出来,这里面有个属性叫 hidden 隐藏起来了。

通过一个简单的属性更改,它就展示出来了。

像这个属性更改,我们做自动化过程中,不可能用手动操作去改这里的属性,我们要通过 JS 去改

如果暂时看不懂的,没有关系,你只需要理解这是通过一个 JS 脚本在改它。

脚本语言放到我们代码里面去,执行一下就可以的,不管是改它的元素属性让它消失让它出现,都是通过代码自动实现。

还有一些情况,可以公号 领取往期的视频教程。

不要潜水,都出来冒个泡,毕竟相遇就是缘分,交个朋友,都是做测试的,说不定哪一天面试的时候就问到了我讲解过的面试题,你可能知道,但不知道该怎么去表述,这个面试题,大家学到了的,可以点赞支持一下!说不定就又在一起工作了。

如若有缘,江湖再见!

共收到 2 条回复 时间 点赞

Q:如果一个元素无法定位,脚本报错了,你一般会考虑哪些方面的原因?
A:
1.
页面加载元素过慢,需要加等待时间
2.
页面有 frame 框架页,需要先跳转到 frame 框架再定位
3.
元素是动态元素,定位的元素发生了变化,需要优化定位方式
4.
识别到了元素但是元素可能不可用、不可写,需要使用 JS 把前置操作完成

涨知识了🍗

Mango 回复

课代表,前排😎

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册