自动化测试中定位不到元素的常见几种情况解决办法

时间:2024-03-19 12:07:55

今天在测试群里看到好几个好几个小伙伴选择定位元素的办法,有大牛也帮忙解决了

下面我自己整理一下,收益良多

  • 情景1:程序运行太快,定位元素问题

自动化测试中定位不到元素的常见几种情况解决办法

这个还是比较简单的,用xpath和link_text都可以

首先:这里可以用link_text定位。driver.find_element_partial_link_text('一次费用到款').click()

不过咨询这个问题的小伙伴,用xpath定位不成功。如下图,这里的错误是语法错误,xpath里面的也需要‘’引起来

自动化测试中定位不到元素的常见几种情况解决办法

这里最后加了引号,还是报错。原因不是没有定位到,是程序运行太快,页面没有加载就要访问a元素了

这里,小伙的设置的是隐形等待implictly.wait 。经过实践是不行的。

要用time.sleep()  (使用前需要导入,import time)

因为隐形等待是针对这个页面,sleep是针对元素。(有兴趣了解的可以上网查)

使用xpath定位还是link_text定位

并且以后页面改动了 xpath说不定定位不到了,link还是可以的。link比xpath简单,只要定位的是链接,而且链接的字是唯一的就可以了。

自动化测试中定位不到元素的常见几种情况解决办法


  • 情景2:勾选取消勾选,界面结构变了的情况下元素定位

自动化测试中定位不到元素的常见几种情况解决办法

自动化测试中定位不到元素的常见几种情况解决办法

这里,取消了勾选,就少展示一列展示,下拉再选择勾选,就多了一列展示。

问题:定位不到最后一个,前面都可以

自动化测试中定位不到元素的常见几种情况解决办法

大牛解决办法:

只需要定位这个tr下面的所有th,然后循环点击

也就是前面很多写的不用了,这里一个循环搞定。代码的魅力所在,可以复杂,也可以简单自动化测试中定位不到元素的常见几种情况解决办法

自动化测试中定位不到元素的常见几种情况解决办法


  • 情景3:用自动化点击链接,进入另一个页面,去定位这个页面的元素,怎么也定位不到

原因:这是又打开了另一个新的网页,需要切换到新的网页才能定位

处理:需要进行多窗口切换,详细网上查询。