自动化测试面试题

1、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?
引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,
自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
2、做自动化测试用的什么框架?可以说出以下自己擅长的一种:

    1.python+selenium+unittest+htmltestrunner

    2.python+selenium+pytest+allure

    3. robotframework+Selenium2Library

 3、在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?

    主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右!

 4、如果一个元素无法定位,你一般会考虑哪些方面的原因?

  1.页面加载元素过慢,加等待时间

  2.页面有frame框架页,需要先跳转入frame框架再定位

  3.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。

  4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成

5、元素定位方法你熟悉的有哪些?

  id name classname link_text css xpath

6、遇到frame框架页面怎么处理?

    先用driver.switch_to.frame()跳转进去frame,

       然后再操作页面元素,

       操作完后使用driver.swith_to.default_content()跳转出来

7、遇到alert弹出窗如何处理?

  使用driver.switch_to.alert方法先跳转到alert弹出窗口

  然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本

8、如何处理多窗口?

  这个多窗口之间跳转处理,我们在项目中也经常遇到。就是,当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,

     1.我们在点击链接前使用driver.current_window_handle获得当前窗口句柄。

    2.再点击链接。点击后通过driver.window_handles获得所有窗口的句柄,

    3.然后再循环找到新窗口的句柄,然后再通过driver.switch_to.window()方法跳转到新的窗口

9、怎么验证元素是enable/disabled/checked状态?

  定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。

10、如何处理下拉菜单?

  在Selenium中有一个叫Select的类,这个类支持对下拉菜单进行操作。使用方法如下:

    1.定位元素

    2.把定位的元素转化成Select对象。

      sel = Select(定位的元素对象)

    3.通过下标或者值或者文本选中下拉框。
      sel.select_by_index(index);
      sel.select_by_value(value);
      sel.select_by_visible_text(text);

11、在日历这种web 表单你是如何处理的?

  首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。

12、常见的selenium异常有哪些:

  NoSuchElementException:没有该元素异常

   TimeoutException : 超时异常

   ElementNotVisibleException :元素不可见异常
   NoSuchAttributeException :没有这样属性异常
   NoSuchFrameException :没有该frame异常

13、关闭浏览器中quit和close的区别

  两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。

    quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。

14、在Selenium中如何实现截图,如何实现用例执行失败才截图

    在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图。

15、如何实现文件上传?

  定位元素后,直接使用send_keys()方法设置就行,参数为需要上传的文件的路径。

16、自动化中有哪三类等待?他们有什么特点?

  1.线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。

  2.imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。

  3.WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码

17、你写的测试脚本能在不同浏览器上运行吗

  当然可以,我写的用例可以在在IE,火狐和谷歌这三种浏览器上运行。

  实现的思路是封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,并且使用什么浏览器可以在总的ini配置文件中进行配置。

  需要注意的是每个浏览器使用的驱动不一样。

18、什么是PO模式,为什么要使用它

   PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,

  PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。

  转载:https://www.cnblogs.com/mrjade/p/12737889.html

 

posted @ 2022-03-11 14:17  大熊童鞋  阅读(654)  评论(0编辑  收藏  举报