请选择行业
请选择职位
请选择省份
请选择城市

自动化测试常见面试题,助力通过面试考验

时间: 2024-07-03 16:41   作者: 佚名   点击次数: 
 
  觉得自动化测试很难?
  是的,它确实不简单。但是学会它,工资高啊!
  担心面试的时候被问到自动化测试?
  嗯,你担心的没错!确实会被经常问到!
  现在应聘软件测试工程师的岗位,几乎所有的公司都要求会自动化测试!那么,在面试的时候哪些问题会被面试官经常问到?哪些问题是面试官真正关心的?
  下面通过20道经典自动化测试面试题。让你能够在面试的时候轻松应对,也让你在学习自动化测试的时候明白应该关注哪些内容,而不仅仅只是会调用接口模拟输入和点击操作!
  基础题
  1、web自动化时,定位元素的方式有哪些?
  答:web自动化有8种元素定位方式。与name有关的有3种:name、class_name、tag_name与link相关的有两种:link_text、partitial_link_text。还有一种是用id来定位。剩下两种是xpath和css定位,它们用元素路径来定位的。
  如果元素存在id属性,我一定使用id,因为简单方便,定位最快。其次是Xpath和css,因为很多情况下html标签没有id属性。
  2、如何去定位属性动态变化的元素?
  答:先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)
  3、启动浏览器的时候用到的是哪个webdriver协议?
  答:http协议
  4、XPath中使用单斜杠和双斜杠有什么区别?
  答:单斜杠表示用绝对路径定位,双斜杠表示用相对路径定位。绝对路径就是从html根目录开始表示的元素路径。相对路径就是选择一个元素作为参考点,相对这个参考点元素开始表示的元素路径。
  5、Selenium中有哪些验证点?
  答:Selenium主要有3种验证点
  ① 检查页面标题
  ② 检查某些文字
  ③ 检查某些元素(文本框,下拉菜单,表等)
  6、如何清除中文本框的内容?
  答:使用clear()方法
  driver.find_element().clear()
  7、如何模拟浏览器的前后移动?
  答:
  driver.back() # 后退
  driver.forward() # 前进
  8、find_element()和find_elements()方法有什么区别
  答:两个都是查找元素的方式
  findelement()查找一个页面元素,只会返回WebElement对象
  findelements()查找页面是所有符合匹配的元素,返回元素集合
  9、如何判断case是否通过?
  答:使用断言,与预期结果比较
  10、等待元素加载的方式有几种?
  答:有3种,强制等待、隐式等待、显式等待
  进阶题
  1、定位不到元素怎么办?
  答:
  ① 检查日志,确认当前页面有没有这个元素
  ② 如果有,检查定位方式有没有写错
  ③ 如果还没解决,检查元素是否在内联框里 如果在内联框里,需要先切换到内联框里再定位元素。操作完元素记得退出内联框
  2、如果遇到验证码,需要这么处理?
  答:① 让开发取消测试环境的验证码
  ② 让开发设置万能验证码(使用复杂的其他人无法猜到的验证码)
  ③ 如果是图像验证码,可以使用图像识别技术(难度大,准确率不高)
  ④ 先手动输入登录系统,保留登录成功的cookie。通过cookie绕过验证码
  ⑤ 让开发给验证码的数据库权限,从数据库中获取
  3、遇到弹窗无法导致无法继续下一步操作怎么办?
  答:
  ① 如果是JavaScript弹框,先通过switch_to.alert定位到JS弹框,再调用accept、dismiss等方法处理JS弹框
  ② 如果是系统某个操作步骤的提示框,可以点击关闭按钮,或者按提示操作即可
  4、怎么切换浏览器窗口?
  答:可以通过window_han dles方法获取所有窗口的句柄。然后遍历句柄,使用switch_to.window()方法切换窗口,通过窗口title判断是否是目标窗口
  例如,
  han dels = driver.window_han dles
  for han dle in han dles:
      driver.switch_to.window(han dle)
  if driver.title=="千锋教育":
  # 如果是目标窗口,退出循环
          break
  5、怎么实现拖拽元素的操作?
  答:ActionChains类提供了模拟鼠标操作,如双击,右击,拖拽,悬停等操作
  # 先导入 ActionChains类,并创建对象
  from selenium.webdriver.common.action_chains import ActionChains
  actions = ActionChains(driver)
  # 具体操作,将动作加入任务列表
  source = driver.find_element()
  target = driver.find_element()
  action.drag_an d_drop(source,target) # 拖拽
  # 处理任务列表
  action.perform() # 依次执行任务列表中的所有操作
  设计思路
  1、什么是page object设计模式?
  答:
  ① 通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法
  ② 用例层从页面层调用操作方法,写成用例
  ③ 可以做到定位元素与脚本的分离
  2、page object设置模式中,是否需要在page里定位的方法中加上断言?
  答:不需要,page页只做元素抓取和操作方法
  3、你的自动化用例的执行策略是什么?
  答:
  ① 自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;
  ② 有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;
  ③ 有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。
  4、什么是数据驱动框架?它与关键字驱动框架有什么不同?
  答:数据驱动框架中,测试用例逻辑驻留在测试脚本中。测试数据被分离并保存在测试脚本之外。测试数据是从外部文件(如Excel)中读取的,并被加载到测试脚本中的变量中。变量用于输入值和验证值。
  关键字驱动需要开发数据表和关键字。它们独立于执行它们的测试自动化工具。可以使用或不使用应用程序来设计测试。在关键字驱动的测试中,被测试的应用程序的功能记录在一个表格中,以及每个测试的分步说明。
  5、你觉得自动化测试最大的缺陷是什么?
  答:
  ① 不稳定
  ② 可靠性不强
  ③ 不易维护
  ④ 成本与收益

打印本页 | 加入收藏

上一篇:刚入行的测试新人,应该如何规划自己的职业    

关闭  
主要城市: 北京 上海 杭州 广州 南京 武汉 长沙
全部城市: