5.软件测试—–自动化测试

目录

一、自动化测试

1.单元自动化测试

2.接口自动化测试

3.UI自动化测试 

4.自动化测试工具Selenium 

5.Webdriver

二、一个简单自动化脚本的构成

三、一些基本的webdriver API

1.一个元素的定位

1.1通过id定位元素

1.2通过name定位元素

1.3通过class_name定位

1.4通过tag_name定位

1.5 通过link_text定位

1.6通过partial_link_text定位

1.7通过xpath定位

1.8通过css_selector定位

2.操作测试对象

2.1click 点击对象

2.2send_keys 在对象上模拟按键输入

2.3clear 清除对象输入的文本内容

2.4submit 提交

2.5text 用于获取元素的文本信息

3.鼠标点击与键盘输入 

4.添加等待

4.1固定等待

4.2智能等待

5.打印信息

5.1打印title

5.2打印url

6.对浏览器的操作

6.1浏览器最大化

6.2设置浏览器宽、高

6.3操作浏览器的前进、后退

6.4控制浏览器滚动条

7.键盘事件

7.1键盘按键用法

7.2键盘组合键用法

8.鼠标事件

9.定位一组元素

10.多层框架/窗口定位

11.下拉框处理

12.alert、confirm、prompt 的处理

 13.DIV块的处理

14.上传文件操作


一、自动化测试

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程

1.单元自动化测试

 使用JUnit进行单元测试

2.接口自动化测试

项目前期接口开发完成开始进行测试,适合接口变动比较小的项目

常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman 等。

接口自动化的特点:

可在产品前期,接口完成后介入

用例维护量小

适合接口变动较小,界面变动频繁的项目

3.UI自动化测试 

对系统的界面元素进行操作,用脚本实现模拟用户的使用,完成功能的 正常和异常测试

UI自动化的特点:

用例维护量大

页面相关性强,必须后期项目页面开发完成后介入

UI测试适合与界面变动较小的项目

UI自动化的好处:

可以进行回归测试

节约了资源

是一种可靠的测试方法,机器不会出错

可以完成很多繁琐的工作

能够完成手工测试无法完成的测试

4.自动化测试工具Selenium 

支持多语言:Java、C#、ruby、JavaScript、Python

支持多平台:Linux、Windows、Mac,可以进行兼容性测试

支持多浏览器:Chrome、FireFox、Edge、Opera、Safari

支持分布式测试:SeleniumGrid

5.Webdriver

Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出 JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。

webdriver的工作原理:

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为 webdriver的remote server。
  • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格 式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

二、一个简单自动化脚本的构成

  • from selenium import webdriver 导入webdriver工具包,这样就可以使用里面的API browser = webdriver.Edge() 获得被控制浏览器的驱动,这里是获得Edge的,当然还可以获得Chrome浏览器,不过要想使这一段 代码有效,必须安装相应的浏览器驱动。
  • browser.find_element(by=By.ID, value=’kw’).send_keys(‘自动化测试’)通过元素的ID定位想要操作的元素,并且向元素输入相应的文本内容 。
  • browser.find_element(by=By.ID, value=’su’).click()通过元素的ID定位到元素,并进行点击操作。 browser.quit() 退出并关闭窗口。

三、一些基本的webdriver API

1.一个元素的定位

以百度输入框为例

1.1通过id定位元素

如果id存在,那么可以全局唯一的定位一个元素

1.2通过name定位元素

只有当name存在并且全局唯一才可以定位一个元素

1.3通过class_name定位

只有当class name存在并且全局唯一才可以定位一个元素

1.4通过tag_name定位

只有当tag name存在并且全局唯一才可以定位一个元素

事实上使用tag name定位百度搜索框时是定位不成功的,会 错,因为只有当tag name全局唯一时才可以进行定位

必须是链接,而且链接内容是全局唯一的才可以定位到元素

必须是链接,而且链接内容是全局唯一的才可以定位到元素

1.7通过xpath定位

所有元素都可以通过xpath定位

1.8通过css_selector定位

2.操作测试对象

定位之后需要对这个元素进行操作。是鼠标点击 还是键盘输入,或者清除元素的内容,或者提交表单等。这个取决于定位元素需要进行的下一步操作。

2.1click 点击对象

2.2send_keys 在对象上模拟按键输入

2.3clear 清除对象输入的文本内容

2.4submit 提交

2.5text 用于获取元素的文本信息

3.鼠标点击与键盘输入 

4.添加等待

4.1固定等待

引入time 包,就可以在脚本中自由的添加休眠时间了,这里的休眠指固 定休眠

4.2智能等待

通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait()的用法比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月27日
下一篇 2022年6月27日

相关推荐