简述一下selenium的工作原理?
Webdriver 使用浏览器厂商提供的浏览器自动化 api 来控制浏览器和运行测试。这就好像是一个真正的用户在操作浏览器。由于 WebDriver 不需要使用应用程序代码编译其 API,因此它不具有侵入性。因此,您测试的应用程序与实时推送的应用程序相同。
Selenium的工作原理,主要是WebDriver、Driver、Browser三个角色的协同交互。我们可以想像成生活中打车的场景,WebDriver是乘客,Driver是司机,Browser就是汽车,乘客告诉司机要去哪里,然后由司机驾驶汽车去往目的地。乘客不需要知道如何驾驶汽车,司机也不关注乘客是去做什么的,这个过程,只需要乘客与司机能够正常沟通即可,到达目的地后,再由司机通知乘客已到达。
常见的自动化定位方式(八大元素定位方式)
- id:根据id来获取元素,返回单个元素,id值一般是唯一的;
- name:根据元素的name属性定位;
- tagName:根据元素的标签名定位;
- className:根据元素的样式class值定位;
- linkText:根据超链接的文本值定位;
- partialLinkText:根据超链接的部分文本值定位;
- css:css选择器定位;
- xpath:通过元素的路径来定位;
常见的等待方式有哪些,有什么不同
强制等待:也叫线程等待, 通过线程休眠的方式完成的等待,如等待5秒: Thread sleep(5000),一般情况下不太使用强制等待,主要应用的场景在于不同系统交互的地方。
隐式等待:通过implicitly Wait完成的延时等待,注意这种是针对全局设置的等待,如设置超时时间为10秒,使用了implicitlyWait后,如果第一次没有找到元素,会在10秒之内不断循环去找元素,如果超过10秒还没有找到,则抛出异常,硬式等待比较智能,它可以通过全局配置,但是只能用于元素定位。
显式等待:也称为智能等待,针对指定元素定位指定等待时间,在指定时间范围内进行元素查找,找到元素则直接返回,如果在超时还没有找到元素,则抛出异常,显示等待是 selenium 当中比较灵活的一种等待方式,他的实现原理其实是通过 while 循环不停的尝试需要进行的操作。
什么是po模式,简单描述一下po模式
PO模式,全称为Page Object Model ,简称POM,是页面对象模式。对页面进行抽象或者说建模的过程,是把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法。把页面的一个个的web元素设计为页面对象的属性,把页面上的操作(如点击、输入等)设计为页面对象的行为。在自动化测试当中,主要用来实现对页面操作和测试逻辑的一个分离,这样做的好处是业务和实现分开,使自动化测试脚本具备更高的可维护性。
你怎么提高UI自动化脚本的稳定性?
- 尽量用相对路径的xpath表达式;
- 查找元素优先用显示等待;
- 用例与用例之间尽量避免产生依赖,用例可以独立执行;
- 用例执行结束后对测试场景进行还原,避免影响其他用例的执行;
- 脚本执行失败后加入重试机制,提升用例的稳定性;
- 尽量保证单独的测试环境,避免其他的测试同步进行;
你觉得自动化最大的缺陷是什么
成本高
不稳定
不易维护
投入产出比容易为负
自动化的测试用例从哪来
从手工测试中来,选取核心的、必须执行的、且易于实现、手工用例
