首页 > 其他分享 >ui自动化测试面试题总结

ui自动化测试面试题总结

时间:2022-10-25 11:23:57浏览次数:45  
标签:面试题 元素 element 用例 pytest ui 测试 自动化

1 UI自动化框架如何让搭建?

  首先按照Po模式搭建自动化框架,搭建框架使用的技术是selenium + pytest ,将框架分为6层,common层(公共层:basepage[基础操作封装]、hander_config[ini配置文件]、hander_path[路径]、my_logger[日志分装])、conf(配置层:ini文件、yaml文件)、outputs(日志输出层)、pageobject、pagelocators、testcases、testdatas。

2 UI自动化测试中定位方式有哪些?常用的有哪些?

  "8大定位方式,id 、class、text、tag、link 、partial link 、xpath、css,常用的id、text、xpath、class、link

3 UI自动化测试有哪些缺点?如何改进?

  不稳定,页面经常变,不好定位,不适合业务复杂和频繁变动的项目尽可能的使用显性等待

4 UI自动化中三种等待?

  sleep()强制等待 始得线程强制处于睡眠状态

  driver.implicitly_wait()隐形等待 ,设置的时全局等待,调用一次就够了

  webdriverwait()显性等待   等待方式expected_conditions   特定的元素都设置自己的等待方式进行等待

5 PO设计模式的原理?

  原理:Po模式成为页面对象模型,是将页面操作与用例分离,将页面操作和元素定位分装成page层,页面的测试用例和数据分装为text层

6 Unittest框架有什么缺点?

  创建测试用例不如pytest灵活、创建用例上测试报告也不如pytest的aller报告清晰美观

7 pytest和unittest区别?

  pytest:

    创建:文件名test_或 *_test开头  类Test开头  函数test_开头就可以自动识别,直接函数test_也可以识别

    运行:pytest.main(""-s"",""-v"",""html=hello.html"",""_allerdir=outputs/word.html"")

    报告:以参数的方式添加运行中

    断言:assert   a=b

    前置条件:

      方法一:deardown,setup,deardown_class,setup_class

  方法二:创建一个conftest.py文件用来编写前置条件,使用fixtrue(),四个级别,默认函数级别,funaction/class/moder/pagage/session,前后置写在一起,用yaid分割开,返回信息写再yaid后面;调用的时候使用pytest.make.usefixture(参数)参数只前后置的函数名称。

    传入参数为字典时:pytest.mark.parametrize(“case”,字典),用例调用直接以参数的方式传入case即可

    冒烟测试:创建配置文件pytest.ini文件,写入固定格式,pytest.make.配置文件参数名,运行“-m=配置文件参数名”

  unittest:

    创建:文件名test_开头  类继承unittest.testcase  函数test_开头  

    运行:加载测试用例:testcases = unittest.testloader().discover(test_case_dir),

      套件创建:suite=unittest.testsuite(),

      将用例放在套件中:suite.addTest(testcases)  

      执行套件:unitest.texttestrunner.run(suite)

    报告:第三方插件bf = BeautifulReport(),将收集的用例添加报告中

    断言:assertnotequest(a,b)

    前置条件:deardown,setup,deardownclass,setupclass

8 Webdriver的原理

  由于python语言不能与浏览器直接通信。这时候webdriver就充当了一个翻译器,将python脚本翻译成一个浏览器可以识别的语言(js)。首先python脚本创建一个session会话,再session中通过http请求像webdrivwer发送请求,webdriver接收到信息,再解析发送为浏览器,浏览器接收到请求后,返回请求结果到webdriver中,webdriver做一些分装后返回给python脚本,根据返回值就能判断对浏览器的操作是不是执行成功。

9 如何把自动化测试在公司中实施并推广起来的?

  1.确定自动化使用的框架、技术

  2.搭建自动化框架

  3.完善自动化框架,形成流程化文档

  4.推广至其他项目组使用

10 请描述一下自动化测试流程?

  1.制定测试方案

  2.设计测试用例,并进行评审

  3.搭建自动化框架

  4.编写测试脚本

  5.维护测试脚本

  6.设置无人值守测试运行

  7.优化测试脚本

11 自动化测试用例如何编写?

  使用其他组员已经编写好的用例进行挑选。编写主要的流程用例。因为一般自动化测试都是用来回归测试和冒烟测试使用。

12 上一个项目中自动化测试的执行策略?

  设置的是早上2点钟自动执行用例,执行完后将执行结果以邮件的方式发送给测试人员以及相关人员手中。

13 自动化测试发现BUG多吗?

  没又多少bug,因为一般自动化测试都是已经进行过手工测试的,并且都是回归测试。

14 你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?

  做自动化是为了后期减少回归测试的工作量。后期回归测试时能够及时发现问题,及实报告修改。

15 自动化测试有误报过bug吗?产生误报怎么办?"有无误报过,

  主要原因:

    1.元素定位不稳定,需要完善元素定位的方式

    2.开发将页面做了修改调整,测试未能及时的调整,完善

16 自动化测试过程中,你遇到了哪些问题,是如何解决的?

  1.元素定位不稳定

  2.自动化出现误报

  3.自动化测试报告文件覆盖问题,文件添加时间

  4.自动化测试维护比较麻烦

  5.数据库校验比较有难度"

17 在上一家公司做自动化测试用的什么框架?

  python+Selenium+pytest+aller

  python +unittest+BeautifulReport

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

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

19 在执行脚本过程,如何实现当前元素高亮显示?

  这个其实就是利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,

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

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

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

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

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

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

  先切换至driver.switch_to.iframe里面,再进行定位,完成操作再driver.switch_to.default_content()跳出来

22 遇到alert弹出窗如何处理?

  切换至driver.switch_to.alert(),再操作accept、dismiss、text()

23 如何处理多窗口?

  1. 首先获取所有窗口的句柄hand = driver.window_handles()

  2.切换至最后一个窗口driver.switch_to_window(hand[-1])

  3.再操作元素

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

  enable      启用          is_enable()          是否启用 

  disabled   禁用          is_displalyed()    是否禁用

  checked   默认选中   is_selected()       是否选中

25 如何处理下拉菜单

  html源码中如果不是select下拉框,需要定位到元素,直接点击选择即可。如果源码中是select下拉框,需要调用selenium中的Select类,使用下标,name的值,文本定位三种方法都可以定位到。

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

  如果日历输入框不可以输入,需要借助调用js,使用js将disable属性去掉,就可以直接输入了;如果日历输入框直接可以输入,定位到元素后,直接调用send_keys()方法输入即可。

27 举例一下说明一下你遇到过那些异常?

  常见的selenium异常有这些:

    NoSuchElementException:没有该元素异常

    TimeoutException : 超时异常

    ElementNotVisibleException :元素不可见异常

    NoSuchAttributeException :没有这样属性异常

    NoSuchFrameException :没有该frame异常"

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

  quit时关闭全部窗口,close是关闭当前窗口

29 在Selenium中如何实现截图?如何实现用例执行失败才截图?

  driver.save_screenshot(),再用例执行过程中调用页面操作,页面操作如果失败的时候调用截图方法。

30 如何实现文件上传?

  pywinauto第三方插件,使用send_keys(地址)类,send_keys("{VK_RETURN}")

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

  可以的,更换webdriver驱动和调用的浏览器的。可以将更换浏览器分装一下,浏览器数据从ini文件中获取即可。

32 鼠标如何操作数据?

  ActionChains方法列表

    click(on_element=None) ——单击鼠标左键

    click_and_hold(on_element=None) ——点击鼠标左键,不松开

    context_click(on_element=None) ——点击鼠标右键

    double_click(on_element=None) ——双击鼠标左键

    drag_and_drop(source, target) ——拖拽到某个元素然后松开

    drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

    key_down(value, element=None) ——按下某个键盘上的键

    key_up(value, element=None) ——松开某个键

    move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

    move_to_element(to_element) ——鼠标移动到某个元素

    move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

    perform() ——执行链中的所有动作

    release(on_element=None) ——在某个元素位置松开鼠标左键

    send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

    send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素"

 

标签:面试题,元素,element,用例,pytest,ui,测试,自动化
From: https://www.cnblogs.com/Happy-Girl-T/p/16824262.html

相关文章

  • 腾讯前端常考vue面试题整理
    什么是mixin?Mixin使我们能够为Vue组件编写可插拔和可重用的功能。如果希望在多个组件之间重用一组组件选项,例如生命周期hook、方法等,则可以将其编写为mixin,并在......
  • 百度前端高频react面试题总结
    可以使用TypeScript写React应用吗?怎么操作?(1)如果还未创建CreateReactApp项目直接创建一个具有typescript的CreateReactApp项目:npxcreate-react-appdemo-......
  • SoapUI返回XML中文乱码
    SoapUI-5.7.0新增中文配置默认安装位置(如果自定义请找到对应按照目录)C:\ProgramFiles\SmartBear\SoapUI-5.7.0\bin\SoapUI-5.7.0.vmoptions末尾新增配置-Dsun.jnu.en......
  • layui 设置表格高度自适应后,工具栏设置fixed后高度,不一致问题
    js部分:,done:function(res,curr,count){//该方法用于解决,使用fixed固定列后,行高和其他列不一致的问题......
  • 还在使用@Autowrired注入?不妨试试@RequiredArgsConstructor
    一、前言小编最近在项目里看到有的同事大神用到了Lombok中的一个@RequiredArgsConstructor,带着好奇发现这个东西就是简化了一些@Autowired注解,想想如果一个Service还有几......
  • .NET MAUI应用中使用资源文件/图像
    官方文档:https://learn.microsoft.com/zh-cn/aspnet/core/blazor/hybrid/static-files?view=aspnetcore-6.0在.NETMAUI应用中,使用MauiAsset生成操作的原始资源和.NET......
  • 「行业应用」界面框架Kendo UI助力企业加速完成财务数据可视化
    爱尔兰某知名数字化服务机构研发主管RichardOrmond:“CRH是一家知名的建筑材料经销上市公司,年收入超过18亿欧元。为了更好地向公司投资者展示公司财务、业务策略等,最近他......
  • 仿制element-ui按钮组件(一)
    这里我想做一个按钮组件的页面,左边放置按钮组件,右边是按钮组件的属性选择下拉框。我可以选为按钮定义的属性,然后在左边的按钮上面体现。这里我遇到一个问题,如上图,element......
  • 在线工具的 UI 变迁
    V1. Ref:https://www.cnblogs.com/farwish/p/16823474.html......
  • 5.List源码面试题集锦
    1.新建一个ArrayList,现在add一个值,此时数组的大小是多少?下一次扩容前最大可用大小是多少?答:此处数组的大小是1,下一次扩容前最大可用大小是10。因为ArrayList无参构造器初始......