千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  软件测试面试题  > Selenium总是提示定位不到元素该怎么解决?

Selenium总是提示定位不到元素该怎么解决?

来源:千锋教育
发布人:wjy
时间: 2022-09-01 14:30:36 1662013836

公司:#小米 #美团

岗位:#自动化测试工程师

关键字:#元素定位 #元素定位问题解决 #脚本设计

1、看看是不是有frame/iframe嵌套。 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法:driver.switch_to.frame(id/name/obj)。 switch_to.frame()默认可以直接取表单的id或name属性。如果没有可用的id和name属性,可以先定位到frame/iframe,再将定位对象传给switch_to.frame(对象)方法。

2、页面跳转到新的标签页,或者弹出的警告框等。在页面操作过程中有时候点击某个链接会弹出新窗口,这时就需要切换焦点到新窗口上进行操作。 解决方法:对于JavaScript生成的alert、confirm以及prompt,无法使用前端工具对弹出窗口进行定位的,使用driver.switch_to.alert方法定位弹出框。 

3、页面元素失去焦点导致脚本运行不稳定。 解决方法:driver.switch_to.active_element 遇到脚本不稳定,有时会失去焦点导致测试失败的情况下,可以先切到焦点元素再进行操作。

Selenium总是提示定位不到元素该怎么解决?

4、使用Xpath或CSS定位。find_element_by_xpath("//标签[属性='值']")使用Xpath/CSS方法,非常适合定位属性值动态生成、不容易定位的元素。如果不想指定标签,则可以使用“*”代替,使用xpath不局限于id、name和class这三个属性,元素的任意属性值都可以使用,只要它能唯一的标识一个元素。 解决方法:如果一个元素没有唯一属性,那么我们可以一级一级向上查找,直到找到可以唯一定位元素的属性,再向下查找其子元素。 

5、页面还没有加载出来,就对页面上的元素进行的操作。因为加载元素延时造成的脚本失败,我们可以通过设置等待时间来提升自动化脚本的稳定性。 解决方法1:WebDriverWait() 显示等待。等待单个的元素加载,通常配合until()、until_not()方法使用。

6、元素被遮挡,不可用,不可见。 解决方法1:driver.maximize_window() 由于窗口大小改变引起的页面元素布局发生变化,被测元素被遮挡,可以先将窗口最大化,再进行元素定位。

7、使用WebDriver调用JavaScript代码代替无法实现的功能。对于有些WebDriver没有提供的方法或者无法实现的功能,WebDriver提供了driver.execute_script()方法来执行JavaScript代码。 解决方法:如果页面内容过长,窗口最大化也无法查看到所有元素,可以通过执行JavaScript脚本实现滚动条的拖动等动作。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT