今天在测试群里看到好几个好几个小伙伴选择定位元素的办法,有大牛也帮忙解决了
下面我自己整理一下,收益良多
- 情景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:用自动化点击链接,进入另一个页面,去定位这个页面的元素,怎么也定位不到
原因:这是又打开了另一个新的网页,需要切换到新的网页才能定位
处理:需要进行多窗口切换,详细网上查询。