使用四层结构实现业务逻辑、脚本、数据分离。
.使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性
对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
测试用例设计中,减少测试用例之间的耦合度。
2.你的自动化用例的执行策略是什么?
自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;
有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;
有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。
3.什么是持续集成?
频繁的将代码集成到主干,持续性的进行项目的构架,以便能能够快速发现错误,防止分支大幅度偏离主干
4.自动化测试的时候是不是需要连接数据库做数据校验?
UI自动化不需要
接口测试会需要
5.Selenium有几种定位方式?你最偏爱哪一种,为什么?
Selenium有八种定位方式:
与name有关的有三种:name、class_name、tag_name
与link相关的有两种:link_text、partitial_link_text
与id有关:id
全能选手:xpath、css_selector
如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位
如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。
6.如何提高selenium脚本的执行速度?
优化等待时间,使用WebDriverWait智能等待代替 线性等待sleep和隐式等待imlicitlyWait
减少不必要的操作
在服务器允许的情况下,使用多线程实现并发执行测试用例
7.怎么对含有验证码的功能进行自动化测试?
图像识,难度大,效果不好不推荐
屏蔽验证码,邀请开发处理,在测试环境,预发和正式环境恢复
万能验证码,使用复杂的其他人无法猜到的验证码
8.如何验证复选按钮是不是被选中?
可以使用元素的is selected()方法,如果返回的是true则说明被选中,否则表明未被选中
9.如何处理alert 弹窗?
先定位跳转到alert上,然后点击确认或取消
Alert alert = dirver.swichTo().alert();//切换到alert
alert.accept();//确定
alert.dismiss();//
10.如何用webdriver进行鼠标右键点击操作?
使用Actions 类
Actions actions = new Actions(driver)
actions.moveToElement(element).perform();
actions.contextClick.perform();
11.如何使用webdriver 执行拖拽 的操作?
还是使用actions类
Actions actions = new Actions(driver)
WebElement element1 = driver.findElement(by);
WebElement element2 = driver.findElement(by);
actions.dragAndDrop(element1,element2)perform();
12.举一个WebDriver中方法重载的例子
frame(string, name), frame(int index), frame(Web Element element)
点击领取学习资料
13.下拉菜单如何选择一个菜单项?
如果下拉菜单是select 标签,使用方法;select By Value() 或者selectByIndex()或者select ByVisibleText()即可
如果这个下拉菜单不是通过select标签创建,则直接通过xpath 定位元素然后去点击选择