Selenium相关问题点及分层框架设计思想

Selenium相关问题点

1.selenium中如何判断元素是否存在?

expected_conditions 模块提供了16中方法

2.Seleiun中如何保证操作元素的成功率呢?

WebDriverWait()与expected_conditions判断方法进行封装,
循环判断元素出现后在操作,这样可以大大提高操作元素的成功率

3.如何提高selenium脚本的执行速度?

(1)少用强制等待time.sleep(),尽量不用implicitly_wait()
(2)多用显示等待方法
(3)增强电脑性能

4.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何提升用例稳定性呢?

显性时间和和判断方法

5.你的自动化用例的执行策略是什么呢?

集成到哦jenkins一键执行,可以手动执行,也可以定会执行

6.什么是持续集成

持续集成是一种软件开发时间,即团队开发成员经常集成他们的工作,
同过每个成员每天至少集成一次,页就意味着每天可能发生很多次集成。
每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,
从而尽早的发现集成错误。

7.自动化测试的时候是否需要连接数据库做数据效验呢?

(1)UI自动化不需要
(2)接口自动化需要连接数据库做数据效验

8. selenium 定位方法,最好用的是什么?

css,定位方法最好用,css语法简洁,定位快

9.如何定位页面上动态健在的元素呢?

WebDriverWait()方法循环查询元素加载状态

10.如何定位属性动态变化的元素?

先去找该元素不变的属性,如果都变,那就赵其父元素,层级定位

11.webdriver client的原理是什么?

webdriver是按照server - client 的经典设计模型设计的
server端就是remote server,可以是任意的浏览器。当我们的脚本启动
浏览器后,该浏览器就是remote server,它的职责就是等到client发送请
求并做出响应;
client端简单来说就是我们的测试代码,我们测试代码中一些行为,比如打开
浏览器,跳转到特定的url等操作是以http请求发送给被测浏览器的,也就是
remote server,remote server接收请求,并执行相应操作,并在
response中返回执行状态,返回值等待信息

12.Page Objects

中文翻译为页面对象,是指UI界面上用于与用户进行交互的对象,
把界面定位和业务操作分开,实现元素与操作和业务的分离,通过PO对UI
界面交互细节进行了封装,这样可以使测试案例更加关注业务,而非界面细节,这样可以使测试案例更加关注业务,而非界面细节,提高了测试案例的可读性;通过PO封装可以减少大量冗余的代码编写,对对象库层,操作层,业务层进行了分离,节省了后续大量的维护,测试中的每一个页面当做一个对象进行封装(实际实现的时候把它当做一个模块),然后把这个对象进行分层设计,拆分为了元素管理层,操作管理层和业务管理层,这样在实际测试的时候,我们写脚本的工程师,可以只调用业务管理层里边的方法就可以完成测试,并不需要关系到底点击了哪些元素,对元素进行了什么样的操作

13.什么是page factory设计模式?

(1)创建一个BasePage类
(2)创建多个page类,集成BasePage
(3)用例层调用page类

14.怎样去选择一个下拉框中的value=xx的option?

(1)select类里面提供的方法:
select_by_value(“xxx”)
(2)xpath也可以定位到

15.自动化的缺陷是什么

需求变动大的时候,维护成本高

最后五层框架设计思想

自动化测试我们公司一般用在冒烟测试及回归测试阶段,在开发自动化测试用例时我们要是采用原始显性代码的方式会出现大量的冗余代码,在版本迭代式要需求变化的,就要话花费大量的时间定位和修复,所以我们采用分层框架设计思想来实现,分为5层:
1、公共函数库层
为了方便的定位问题,我们把工具层(selenium)与页面元素对象单独抽离分装。工具提供对浏览器的操作、对象识别、断言、操作动作等封装处理,方便排查和定位问题,所以我们把selenium提供的API封装utils层,另外分析需求把通用功能和使用频率较高的页面采用PO技术进行单独抽离分装形成Page层,这样应对需求变化的属性信息比较灵活,提高代码的维护效率。
其中封装例如:

(1)工具层
(2)po
(3)三方库 xml excel csv ini yaml等解析方法库

2、数据池层
在测试活动中我们会经常修改测试数据来覆盖不同的测试需求,为方便维护测试数据我们把数据单独抽离出来,采用ini,xml,yaml,excel等不同的文件中,读取测试数据即可,这样做到了业务代码与数据分离,方便定位,容易维护代码,降低维护成本。
封装内容:

配置文件
config
*.xml
*.yaml

3、用例层
冒烟测试用例和回归测试用例i方便管理单独存放在用例层里,引入unittest框架来优化代码,减少用例的冗余操作步骤。当我们开发代码时用到的通用功能去公共函数库层中调用对应模块即可,可减少大量冗余代码,测试数据去去数据池中解析对应文件,就做到了业务代码与数据分离,方便定位,容易维护代码。
封装内容:

不同模块的用例

4.测试套件层
在冒烟测试或回归测试活动中,我们会选择不同的回归策略,为了方便管理我们的要进行回归的测试用例,我们使用测试套件爱组织和管理我们的用例。
5,测试报告层
测试结束,我们需要知道最后的结果是否出现异常,所以引入HTMLTestRuuner来生成测试报告,方便查看结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值