自动化测试经典面试题 | 您所在的位置:网站首页 › 网页控件加载不出来怎么回事 › 自动化测试经典面试题 |
元素定位常见的面试相关问题
一、元素定位1、Selenium/Appium定位方法有几种?分别是?2、如何通过子元素定位父元素
二、元素定位不到1、定位不到元素是什么原因导致的?2、如何定位动态元素3、有的元素就加载页面上,但是你却定位不到,怎么解决
三、元素操作1、一个元素明明定位到了,点击无效(也没报错),如何解决?2、selenium 中隐藏元素如何定位,操作?3、如果产品总是出现弹窗,导致用例无法执行,应该如何解决?(未完)4、如何获取app中的toast消息提示?
四、元素是否在页面存在1、如何判断一个页面上元素是否存在?
一、元素定位
1、Selenium/Appium定位方法有几种?分别是?
selenium: xpath、css、id、name、class_name、tag_name、link_text、partail_link_text Appium: xpath、css、id(通过身份标识 id 查找元素,对应的是resource-id)、accessibility_id(通过 accessibility_id查找元素,对应的是content-desc) 2、如何通过子元素定位父元素获取当前节点的父节点://input[@name="wd"]/.. 获取当前节点的爷爷节点://input[@name="wd"]/../.. 二、元素定位不到 1、定位不到元素是什么原因导致的?原因:元素定位表达式写错了(可能是单词、格式写错了) 解决方案:检查单词、元素定位表达式。 原因:元素定位写错了,报NoSushElementException(在elements中搜索对应的元素,发现没有搜索到,则证明定位写错了) 解决方案:检查写一个正确的定位 原因:由于页面加载很快,元素还未加载出来就执行了find_element操作 debug思路:1、添加一个强制等待,确认页面加载完成之后,再执行find操作,如果此时用例通过,代表元素定位没有问题。否则是别的原因。 解决方法:使用隐式等待和显性等待 原因:因为id是动态的,一直是变化的,所以此时使用ID定位就会非常不稳定 解决方案:检查每次使用的这个元素的id是否一致;使用其他的定位方式,xpath或者css的相对定位 原因:排除以上情况后,还有可能性为iframe debug思路:1、查看浏览器的elements页面中输入iframe,确认页面中是否含有iframe, 2、然后鼠标悬浮到iframe元素上,检查要定位元素是否在iframe页面中,如果是的话,那么定位之前需要切换iframe的操作。driver.switch_to.frame() 原因:打开了新窗口,并且定位的是新窗口的元素 debug思路:检查是否打开了新的页面 解决方案:如果要定位新窗口的元素,那么需要先切换到对应的页面再去定位 windows=driver.window_handles driver.switch_to.window(windows[-1]) 2、如何定位动态元素检查每次使用的这个元素的id是否一致,确定是否是否是动态元素; 如果是动态元素,使用其他的定位方式,xpath或者css的相对定位 3、有的元素就加载页面上,但是你却定位不到,怎么解决同1 三、元素操作 1、一个元素明明定位到了,点击无效(也没报错),如何解决?原因:异步加载js导致点击事件无效 解决方案:自己封装一个显性等待,循环点击该按钮,直到生效为止 2、selenium 中隐藏元素如何定位,操作?原因:隐藏元素可以直接定位,但是无法直接点击或者交互 解决方案:使用js执行交互操作 driver.excute_script("document.querySelector(‘#kw’).value=‘python’ "):修改文本框文本信息 driver.excute_script(“document.querySelector(‘#kw’).value”):获取文本框文本信息 driver.excute_script(“document.querySelector(‘#su’).click()”):点击操作 driver.excute_script(“document.querySelector(‘#train_date’).value”):获取时间控件的信息,并返回出来 3、如果产品总是出现弹窗,导致用例无法执行,应该如何解决?(未完)在做app自动化测试过程中不定时弹框(广告弹窗,升级提示框,新消息提示框等等) 弹框不是 BUG(UI 界面提示,警告的作用) 解决方法:通过添加黑名单,解决异常处理;采用装饰器 对原有函数的功能增强 不改变原有函数的逻辑 使代码更简洁、易维护 详细文章介绍:https://blog.csdn.net/YZL40514131/article/details/130543238?spm=1001.2014.3001.5501 4、如何获取app中的toast消息提示?原因:toast闪过太快,不好定位 解决方案:直接通过xpath定位结合隐式等待获取《特殊控件toast识别》 appium使用uiautomator底层的机制来分析抓取toast,并且把toast放到控件树里面,但本身并不属于控件。 方式一: self.driver.find_element(AppiumBy.XPATH,"//*[contains(@text,'popup menu')]") 方式二: self.driver.find_element(AppiumBy.XPATH,"//android.widget.Toast[@class='android.widget.Toast']") 四、元素是否在页面存在 1、如何判断一个页面上元素是否存在?解决方案:通过查看当前页面dom,搜索该元素是否存在。如果是脚本自动化运行过程中,应该通过打印page_source,即可了解到该元素在运行过程中是否存在 |
CopyRight 2018-2019 实验室设备网 版权所有 |