全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  软件测试面试题

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

发布时间:2022-09-01 14:30:36
发布人:wjy

公司:#小米 #美团

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

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

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脚本实现滚动条的拖动等动作。

相关文章

软件测试公司面试题:如何确保软件的质量和稳定性

2023-07-28

软件测试公司面试题:黑盒测试和白盒测试区别

2023-07-27

软件测试公司面试题:什么是“边界值测试”?

2023-07-26

软件测试公司面试题:过去项目中遇到的最具挑战性的软件缺陷,如何发现和解决的?

2023-07-24

软件测试公司面试题:"冒烟测试"的概念和作用

2023-07-21

软件测试工程师要掌握哪些专业技能

2023-03-07
在线咨询 免费试学 教程领取