Selenium知识点
1、常用自动化测试工具机器运行原理,写出一段元素查找的代码?
webdriver 原理:
每个 Selenium 命令,这里指的是所谓的基础操作,例如,点击、输入等,都会创建一条 HTTP 请求,
发送给 Browser WebDriver
Browser WebDriver 使用一个 HTTP Server 监听和接收 HTTP 请求
HTTP Server 根据协议规则定义这些 Selenium 命令对应的浏览器具体操作
浏览器执行这些操作
浏览器将执行状态返回给 HTTP Server
HTTP Server 再将这些状态信息返回给自动化脚本
2、如何开展自动化测试框架的构建?
我们公司的自动化测试框架主要是有页面库,数据驱动,测试脚本,测试报告,持续集成这几个部分组
成的。
页面对象库对自动化包括工具(selenium,appium)API 的二次封装,还有使用二次封装后的自动化工具类实现的页面元素封(Page Object)然后会给封装好的页面设置一个统一入口类。这些之中会有一个页面元素文件专门存放元素的定位方法。
数据驱动部分主要是测试脚本中使用的数据文件excel,yaml,txt)以及读取方法类,如果数据涉及到数据库,也会把对应的数据读取方法封装到这个部分。
测试脚本主要是通过 pytest 测试框架进行编写的,选择其的原因主要有其支持 assert 语句断言,适合复杂的功能测试,执行过程中可以自定义用例执行顺序和跳过以及预期,支持重复执行,还可兼容 unittest 编写的测试用例,最重要的是支持参数化和方便持续集成工具集成。
测试报告主要是通过 pytest 自动生成的 Allure 报告,其可读性可生动的数据表图比 pytest 报告更能反应测试结果,也可以集成与 Jenkins 中。持续集成方面主要是通过 Jenkins 进行实现的,目的在于测试脚本的无人值守执行以及自动生成测试报告,方便测试人员能够省出时间进行更多的功能测试和探索性测试。(通过设置几git,gitlab,mailer,allure,等功能插件,配置 Allure 报告,默认邮件发送设置。用例脚本主要存放在 gitlab 用例库中,设置好轮询策略之后,配置报告发送的目标邮箱,就可以实现持续集成实践中的测试环节)
3.如何设计自动化测试用例:
a 编写测试脚本之前要编写测试用例,而且测试用例不能直接使用手工测试的用例。
b 自动化的测试用例是一个完整的场景。用户登录系统到用户退出。
c 用例之验证一个功能点。不用试图登陆后验证所有的功能在退出
d测试用例尽量只做正向的逻辑验证。
e用例之间不要产生关联,相互独立,也要高内聚,低耦合
f 测试用例关注的是功能逻辑的实现,字段无关
g 测试用例的上下文必须有一定的顺序性,前置条件清晰
h检查点的设置要侧重,全面,灵活
i测试用例对数据的操作要进行还原
j测试用例必须是可回归的
k 用例选择遵循成本始终,构建场景,目的冒烟回归,繁琐功能,主体流程
l用例转型遵循前置配置,抛异常,步骤验证,高内聚,关门归原
4.webdriver 如何开启和退出一个浏览器?
开启:dr = webdriver.浏览器类型()
关闭:dr.quit()
5.元素定位
web查找元素定位使用F12,app则使用Appium。
python 8种元素定位的方法:id,name,class name,link text,xpath,css selector,tag name ,partial link tex。
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()